書寫格式 :
左外連接: 表A left join 表B on 條件
右外連接: 表A right join 表B on 條件
外連接的出現,目的就是爲了在查詢過程中以免丟失數據的出現,假設有兩張表,A表和B表,以A表爲主體,查詢A表和B表滿足一定條件的記錄,如果不使用外連接,查詢結果會將A表中不滿足條件的記錄也過濾掉,從而導致查詢結果數據的丟失,這是我們所不期望的,如果使用外連接,那麼A表中不符合條件的記錄也將會保留下來,將不會導致數據的丟失。
說了那麼多,舉個例子就一目瞭然了。
學生表:student
學生課程關係表:SC
例1:查詢每個學生及其選修課程的情況,沒有選修課程的學生也要保留
不使用外連接的情況:
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student, SC
where student.Sno = sc.Sno;
我們會發現,查詢結果將小華和小樂沒有選課的同學的信息過濾掉了,這不是我們所期待的
使用外連接後:
左外連接:
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student left join SC on
student.Sno = sc.Sno;
你會發現,會將沒有選課的同學的信息也保留下來了,這正是我們想要的
右外連接:
外連接的格式: 表A left/right join 表B on 條件
左外連接,就是以左邊的表爲主體,也就是以寫在left on前面的表爲主體,也就是以表A爲主體
右外連接,和左外連接相反,是以right on後面的表爲主體,也就是以表B爲主體
用右外連接實現上述功能:
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from SC right join Student on
student.Sno = sc.Sno;
實現相同的功能,比較兩個SQL
左連接:
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student left join SC on
student.Sno = sc.Sno;
右連接:
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from SC right join Student on
student.Sno = sc.Sno;
對比發現,左連接:是寫在left join左邊的表爲主體,所以叫左連接
右連接以right join右邊的表爲主體,所以叫右連接,
其實兩種都是爲了實現相同功能而出現的,一般都是用左連接