版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_36260974/article/details/88711989
SQL
多表查询
外连接(左右连接)
● 左右连接
- 当我们在做基本连接查询的时候,查询出所有的部门下的员工,我们发现编号为 40 的部门下没有员工,但是要求把该部门也展示出来,我们发现上面的基本查询是办不到的。
- 示例图:
- 使用 ( + ) 表示左连接或者右连接,当 ( + ) 在左边表的关联条件字段上时是左连接,如果是在右边表的关联条件字段上就是右连接。
范例:查询出每一个部门的员工
- 两张表做连接查询时其中一张表要查询全量的数据(不会因为另一张的表的数据的关联而被筛选掉),在两张表关联的时候非全量表的关联字段后面加上(+)就可以做外连接查询。
- 示例图:
范例:左连接
- 示例图:
范例:右连接
- 示例图:
范例:查询出所有员工的上级领导
- 分析:我们发现使用我们以前的做法发现 KING 的上级领导没有被展示,我们需要使用左右连接把他查询出来
- 示例图:
以上操作完整源码:
--查询所有部门
select * from dept d;
--查询所有部门下的员工
select * from emp e order by deptno;
--查询员工、部门信息
select * from dept d, emp e where d.deptno = e.deptno order by d.deptno;
---查询出每一个部门的员工
select * from dept d, emp e where d.deptno = e.deptno(+);
--做外连接查询的时候全量表在左端就是左连接
select * from dept d, emp e where d.deptno = e.deptno(+);
--做外连接查询的时候全量表在右端就是右连接
select * from emp e, dept d where e.deptno(+) = d.deptno;
--查询员工的编号和姓名和他的上级领导的编号和姓名
select e.empno, e.ename, e1.empno, e1.ename
from emp e, emp e1
where e.mgr = e1.empno(+);
如有错误,欢迎指正!