外連接返回的結果,除了包含滿足連接條件的記錄,還包括不滿足連接條件。
舉個栗子:
在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查詢條件的數據。
以下查詢結果一致: