您的位置:首页 > 数据库

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

2013-05-31 14:31 246 查看
数据库中有两种联接:内连接,外连接。
一、其中内连接就是一般的相等连接。
如: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