sql中的鏈接查詢有inner join(內鏈接)、left join(左鏈接)、right join(右鏈接)、full join(全鏈接)四種方式,它們之間其實並無太大區別,僅僅是查詢出來的結果有所不一樣。
例如咱們有兩張表: sql
Orders表經過外鍵Id_P和Persons表進行關聯。spa
咱們使用inner join對兩張表進行鏈接查詢,sql以下:code
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 INNER JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
查詢結果集:
此種鏈接方式Orders表中Id_P字段在Persons表中找不到匹配的,則不會列出來。blog
咱們使用left join對兩張表進行鏈接查詢,sql以下:圖片
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 LEFT JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
查詢結果以下:
能夠看到,左表(Persons表)中LastName爲Bush的行的Id_P字段在右表(Orders表)中沒有匹配,但查詢結果仍然保留該行。get
咱們使用right join對兩張表進行鏈接查詢,sql以下:it
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 RIGHT JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
查詢結果以下:ast
Orders表中最後一條記錄Id_P字段值爲65,在左表中沒有記錄與之匹配,但依然保留。class
咱們使用full join對兩張表進行鏈接查詢,sql以下:im
1 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 2 FROM Persons 3 FULL JOIN Orders 4 ON Persons.Id_P=Orders.Id_P 5 ORDER BY Persons.LastName
查詢結果以下:
查詢結果是left join和right join的並集。
這些鏈接查詢的區別也僅此而已。