MySQL的join關鍵字詳解

SQL Join聯接子句用於在兩個或更多在數據庫中的表的記錄組合。JOIN是通過使用從兩個表字段共通的值組合連接起來。MySQL官方只提供了三種join方式,內連接、左連接和右連接,不支持其他的連接關鍵字。但是可以通過一定的語法將達到其他的連接的效果。

1.內連接 inner join

最頻繁使用的和重要的聯接是INNER JOIN。它也被稱爲一個等值連接。
INNER JOIN通過結合基於聯接謂詞兩個表(表1和表2)列值創建一個新的結果表。查詢比較表1中的每一行與表2中的每一行,找到所有滿足聯接謂詞的行。 當聯接謂詞被滿足時,對於每個匹配的一對A和B的列值被組合成一個結果行。

INNER JOIN基本語法如下:

SELECT tableA.column1, tableB.column2...
FROM tableA  INNER JOIN   tableB
ON tableA.common_field = tableB.common_field;

在這裏插入圖片描述

2.左外連接 left join

SQL LEFT JOIN返回所有行左表,即使存在左表中沒有匹配。這意味着,如果在ON子句在右邊的表匹配0(零)個記錄,則連接將仍然在結果返回一行,但用NULL顯示在右表中的每一列中。
這意味着,一個左連接從左表中返回所有值,再加上如果右表沒有匹配就使用NULL值代替返回。

LEFT JOIN的基本語法如下:

SELECT tableA.column1, tableB.column2...
FROM tableA  LEFT JOIN   tableB
ON tableA.common_field = tableB.common_field;

在這裏,給定的條件可能是根據您的需要任意給定表達式。

在這裏插入圖片描述

3.右外連接 right join

SQL RIGHT JOIN返回右表所有行,即使在左表中沒有匹配。這意味着,如果ON子句匹配左表0(零)記錄, 連接仍返回一行結果,但用NULL代替左表中的每一列。
這意味着,一個右連接返回右表所有的值,再加上如果沒有匹配左表時使用NULL值。

RIGHT JOIN的基本語法如下:

SELECT tableA.column1, tableB.column2...
FROM tableA   RIGHT JOIN    tableB
ON tableA.common_field = tableB.common_field;

在這裏插入圖片描述

4.左連接

從這一個開始,MySQL不提供正式的一步到位的關鍵字,效果全靠自己模擬。
左連接是得到A表中去除B表內容的剩下的部分,也就是A表獨有的一部分。可以看做是在左外連接的結果中將雙方共有的部分去掉得到的。

SELECT tableA.column1, tableA.column2...
FROM tableA  LEFT JOIN   tableB
ON tableA.common_field = tableB.common_field
where tableB.column1  is null limit 10;

在這裏插入圖片描述

5.右連接

同理,右連接是在右外連接的結果中得到B表獨有的那一部分

SELECT tableB.column1, tableB.column2...
FROM tableA   RIGHT JOIN    tableB
ON tableA.common_field = tableB.common_field;
where tableA.column1 is null limit 10;

在這裏插入圖片描述

6.全連接

全連接顧名思義是獲得AB兩表全部的數據,oracle提供了 full join關鍵字完成這一功能,但是MySQL沒有。不過MySQL中可以藉助union達到這個效果,union的作用是合併兩個查詢的結果。

在這裏插入圖片描述

7.差集

兩表的全連接中除去重合的部分,即兩張表分別的特有部分的合集。

在這裏插入圖片描述

在這裏插入圖片描述

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