左連接(LEFT JOIN 或 LEFT OUTER JOIN)是右左邊表中的數據爲基準,若左表有數據右表沒有數據,否則顯示左表中的數據右表中的數據顯示爲空
右連接(RIGHT JOIN 或 RIGHT OUTER JOIN)是以右邊表中的數據爲基準,若右表有數據左表沒有數據,否則顯示右表中的數據左表中的數據顯示爲空
全連接( FULL JOIN 或 FULL OUTER JOIN) 完整外部連接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。
下面用幾個實例來詳細說明
兩個表:
A(id,name)
數據:(1,張三)(2,李四)(3,王五)
B(id,name)
數據:(1,學生)(2,老師)(4,校長)
內連接結果:
select A.*,B.* from A inner join B on A.id=B.id;
1 張三 1 學生
2 李四 2 老師
左連接結果:
select A.*,B.* from A left join B on A.id=B.id;
1 張三 1 學生
2 李四 2 老師
3 王五 NULL NULL
右連接結果:
select A.*,B.* from A right join B on A.id=B.id;
1 張三 1 學生
2 李四 2 老師
NULL NULL 4 校長
全連接結果
select A.*,B.* from A full join B on A.id=B.id;
1 張三 1 學生
2 李四 2 老師
3 王五 NULL NULL
NULL NULL 4 校長
****************
補充:下面這種情況就會用到外連接
比如有兩個表一個是用戶表,一個是交易記錄表,如果我要查詢每個用戶的交易記錄就要用到左外外連接,因爲不是每個用戶都有交易記錄。
用到左外連接後,有交易記錄的信息就會顯示,沒有的就顯示NULL,就像上面我舉得例子一樣。
如果不用外連接的話,比如【王五】沒有交易記錄的話,那麼用戶表裏的【王五】的信息就不會顯示,就失去了查詢所有用戶交易記錄的意義了。
****************
看一下結果就能明白各種連接的區別了。