数据库中有两种联接:内连接,外连接。

数据库中有两种联接:内连接,外连接。

一、其中内连接就是一般的相等连接。

   如:select * from a, b where a.id = b.id

二、外连接

    对于外连接,可以分为左外连,右外连,全外连。详细介绍如下:

1. LEFT OUTER JOIN:左外关联

SELECT e.last_name, e.department_id, d.department_name

FROM employees e

LEFT OUTER JOIN departments d

ON (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。


2. RIGHT OUTER JOIN:右外关联


SELECT e.last_name, e.department_id, d.department_name

FROM employees e

RIGHT OUTER JOIN departments d

ON (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。


3. FULL OUTER JOIN:全外关联


SELECT e.last_name, e.department_id, d.department_name

FROM employees e

FULL OUTER JOIN departments d

ON (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。


你可以自己建两张表,到库里看看到底是怎样的数据,这样你就会很容易理解了!


////

左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空

======================================================================================

左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空
你是要弄清楚区别在什么地方还是单纯想要文字说明
文字说明的楼上说了一大堆了,不说了。
弄个例题,直观一点。两个表:
--
stu     --exam
id  name     Id   grade
1,  Jack      1,   56
2,  Tom      2,   76
3,  Kity       11,  89
4,  nono

内连接(显示两表id匹配的)
select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id
stu.id   exam.id  name     grade
--------------------------------
1 1 Jack 56
2 2 Tom 76

左连接(显示join 左边的表的所有数据,exam只有两条记录,所以stu.id,grade 都用NULL 显示)
select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL

右连接(与作连接相反,显示join右边表的所有数据)
select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89



你可能感兴趣的:(数据库,where,的,employees)