mysql中的左連接、內連接、右連接和全連接理解

  內連接(INNER JOIN)(典型的連接運算,使用像 = 或 <> 之類的比較運算符)。包括相等連接和自然連接。內連接使用比較運算符根據每個表共有的列的值匹配兩個表中的行
  左連接(LEFT JOIN 或 LEFT OUTER JOIN)是右左邊表中的數據爲基準,若左表有數據右表沒有數據,否則顯示左表中的數據右表中的數據顯示爲空
  右連接(RIGHT JOIN 或 RIGHT OUTER JOIN)是以右邊表中的數據爲基準,若右表有數據左表沒有數據,否則顯示右表中的數據左表中的數據顯示爲空
  全連接( FULL JOIN 或 FULL OUTER JOIN) 完整外部連接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。

下面用幾個實例來詳細說明

兩個表:
A (id, name)
數據:

id name
1 張三
2 李四
3 王五

B (id, name)
數據:

id name
1 學生
2 老師
3 校長

內連接結果
SELECT A.\*, B.\* FROM A INNER JOIN B ON A.id=B.id;

id name id name
1 張三 1 學生
2 李四 2 老師

左連接結果
SELECT A.\*, B.\* FROM A LEFT JOIN B ON A.id=B.id;

id name id name
1 張三 1 學生
2 李四 2 老師
3 王五 NULL NULL

右連接結果
SELECT A.\*, B.\* FROM A RIGHT JOIN B ON A.id=B.id;

id name id name
1 張三 1 學生
2 李四 2 老師
NULL NULL 4 校長

全連接結果
SELECT A.\*, B.\* FROM A FULL JOIN B ON A.id=B.id;

id name id name
1 張三 1 學生
2 李四 2 老師
3 王五 NULL NULL
NULL NULL 4 校長

補充:下面這種情況就會用到外連接
比如有兩個表一個是用戶表,一個是交易記錄表,如果我要查詢每個用戶的交易記錄就要用到左外外連接,因爲不是每個用戶都有交易記錄。
用到左外連接後,有交易記錄的信息就會顯示,沒有的就顯示NULL,就像上面我舉得例子一樣。
如果不用外連接的話,比如【王五】沒有交易記錄的話,那麼用戶表裏的【王五】的信息就不會顯示,就失去了查詢所有用戶交易記錄的意義了。

看一下結果就能明白各種連接的區別了。

原文地址 : http://blog.csdn.net/dsiori/article/details/54926046

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