Oracle的外连接join以及on条件里面add和where后面的add区别

     外连接返回的结果,除了包含满足连接条件的记录,还包括不满足连接条件。
举个栗子:
     在Oracle中自带的SCOTT用户表中,DEPT部门表有部门编号40的部门,EMP员工没有40部门的员工。

select * from emp e right join dept d on e.deptno=d.deptno;
右表:dept |左表:emp

     该右连接查询语句,会保证右表的数据都显示(即使不满足 e.deptno=d.deptno条件的数据),左表不满足条件的列显示null。
在这里插入图片描述

select * from dept d right join emp e on d.deptno=e.deptno;
右表:emp |左表:dept
该右查询保证右表数据都会显示,所以不会显示部门40的信息
//----------------------------------------------------------------------------//
select * from dept d left join emp e on d.deptno=e.deptno;
右表:emp |左表:dept

     上述左连接查询语句,会保证左表的数据都显示(即使不满足 e.deptno=d.deptno条件的数据),右表不满足条件的列显示null。
在这里插入图片描述

on条件里面add和where后面的add区别:

     左连接:显示右表满足on连接条件的数据,所以on里面的add作为限制条件,限制右表显示的数据,不满足的列显示null。
     右连接:显示左表满足on连接条件的数据,所以on里面的add作为限制条件,限制左表显示的数据,不满足的列显示null。

select * from dept d left join emp e on (d.deptno=e.deptno and d.DNAME=‘SALES’)
在这里插入图片描述

     where作为指定查询条件,它的存在会让左连接或右连接都无效,只显示满足where查询条件的数据。
     以下查询结果一致:在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章