oracle(15)_SQL_多表联合查询_外连接

版权声明:如需转载,请注明出处 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(+);

如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_36260974/article/details/88711989