7、4_连接查询:外连接
一 概念
什么是内连接:
假设a表和b表使用内连接,a表和b表没有主副之分是平等的。凡是a表和b表能匹配上的记录都查询出来。匹配不上的就不查了。
上一篇中 king是大boss,对应的领导编号为null,内连接就忽略了这条记录。
什么是外连接:
假设a表和b表使用外连接的话,ab中有一张是主表,一张是附表,主要查询主表的内容,顺便查询附表,如果附表中数据没有和主表匹配上的时候,附表自动模拟出null与之匹配
二 外连接的分类
左外连接(左连接):左边的主表。每个左连接都有一个右连接的写法。
右外连接(右连接):右边的是主表。每个右连接都有一个左连接的写法。
在实际工作中 外连接用的比较多。因为外连接最大的特点是:主表的数据会无条件的查询出来,从而保证数据的完整性和正确性。
而内连接查询的时候,如果ab表数据匹配不上,个别数据会丢失。业务完整性会破话。
三 如何区分内外连接
1 left right 是外连接的标志词
2 没有这两个单词就是内连接
3 inner 和 outer 可以省略不写。写上可读性比较好。
四 实例代码
需求:找出每个员工的上级领导(找出每一个员工)
需求分析:king是大boss,对应的领导编号为null,用内连接查询 这条数据就丢失了,所有应该使用外连接
1)左外连接实现
SELECT a.ename AS '员工姓名',b.ename AS '领导姓名' FROM emp a LEFT OUTER JOIN emp b ON a.mgr = b.empno; //整体用到了自连接
用到的字段 左表 左外连接 右表 等值连接
左表占主导地位,右表匹配不上的数据会模拟出null与之匹配,以保证左表的数据完整性。
2)右外连接实现(右边的表是主表)
SELECT a.ename,b.ename FROM emp b RIGHT OUTER JOIN emp a ON a.mgr = b.empno;
右外连接
考试一下:找出那个部门没有员工
SELECT e.*,d.* from emp e RIGHT OUTER JION dept d on d.deptno = e.deptno where e.ename is null ;
用到的字段 右外连接 主表 连接条件 过滤条件:为空就是没有员工

浙公网安备 33010602011771号