一、外连接
内连接:假设A和B表进行连接,使用内连接的话。凡是A表和B表能够匹配上的记录查询出来,这 就是内连接。(内连接只能查询到两张表可以匹配到的数据,匹配不到的数据查不到)
外连接:假设A和B表进行连接,使用外连接的话。A,B两张表中有一张表是主表,一张表是副 表, 主要查询主表中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹 配上,副表自动模拟出NULL与之匹配。(外连接可以将主表的数据无条件的全部查询出来)
外连接的分类:
左外连接(左连接):表示左边这张表是主表;
右外连接(右连接):表示右边这张表是主表。
左连接有右连接的写法,右连接也会有左连接的写法。
案例一:找出每个员工的上级领导(所有员工全部查询出来)
内连接:select a.ename,b.ename from emp a join emp b on a.mgr = b.empno;
外连接:select a.ename,b.ename from emp a left join emp b on a.mgr = b.empno; (左外连接)
select a.ename,b.ename from emp a right join emp b on a.mgr = b.empno; (右外连接)
案例二:找出哪个部门没有员工
二、三张表连接查询
案例一:找出每一个员工的部门名称以及工资等级。
select e.ename,d.dname,s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal;
案例二:找出每一个员工的部门名称、工资等级、以及上级领导。
select e.ename,d.dname,s.grade,e1.ename from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal left join emp e1 on e.mgr = e1.empno;