MySQL的left join/right join

書寫格式 : 

左外連接: 表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右邊的表爲主體,所以叫右連接,

其實兩種都是爲了實現相同功能而出現的,一般都是用左連接

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