sql面試必會6題經典「資料庫內連接和外連接的區別舉例」

本章節向大家介紹如何使用 MySQL 的 JOIN 在兩個或多個表中查詢數據。

前提如下供後面學習所用:

查看學生表的全部記錄SELECT * FROM STUDENT;

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

查看地址表的全部記錄:SELECT * FROM ADDRESS;

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

表連接按照功能大致分為如下三類:

內連接(INNER JOIN)也稱等值連接

  • 它基於兩個表之間的相等連接,獲取兩個表中欄位匹配關係的記錄。

SELECT * FROM STUDENT A INNER JOIN ADDRESS B ON A.ID=B.A_ID;

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

外連接(OUTER JOIN):

外連接不但返回符合連接和查詢條件的數據行,還返回不符合條件的一些行。

外連接分三類:

1、左外連接(LEFT OUTER JOIN):LEFT JOIN是LEFT OUTER JOIN的簡寫

左(外)連接,左表的記錄將會全部表示出來,而右表只會顯示符合搜索條件的記錄。右表記錄不足的地方均為NULL。

SELECT * FROM STUDENT A LEFT OUTER JOIN ADDRESS B ON A.ID=B.A_ID

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

2、右外連接(RIGHT JOIN):right join是right outer join的簡寫

與左(外)連接相反,右(外)連接,左表只會顯示符合搜索條件的記錄,而右表的記錄將會全部表示出來。左表記錄不足的地方均為NULL。

SELECT * FROM STUDENT A RIGHT OUTER JOIN ADDRESS B ON A.ID=B.A_ID

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

3、全外連接(FULL OUTER JOIN)

MySQL 已經沒有全連接了,有的教程上還寫著 full join 但是實現不了,不過可以換一種方式來查詢。

SELECT * FROM STUDENT A LEFT JOIN ADDRESS B ON A.ID=B.A_ID

UNION

SELECT * FROM STUDENT A RIGHT JOIN ADDRESS B ON A.ID=B.A_ID;

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

三者的共同點:都返回符合連接條件和查詢條件(即:內連接)的數據行。

三者的不同點如下:

1、左外連接還返回左表中不符合連接條件單符合查詢條件的數據行。

2、右外連接還返回右表中不符合連接條件單符合查詢條件的數據行。

3、全外連接還返回左表中不符合連接條件單符合查詢條件的數據行,並且還返回右表中不符合 連接條件單符合查詢條件的數據行。

全外連接實際上是上左外連接和右外連接的數學合集(去掉重複),即「全外=左外 UNION 右外」。

注意:左表就是在「(LEFT OUTER JOIN)」關鍵字左邊的表。右表就是右邊的了。在三種類型的外連接中,OUTER 關鍵字是可以省略的。

交叉連接 : 也稱作笛卡爾積。

它不使用任何匹配或者選取條件,而是直接將一個數據源中的每個行與另一個數據源的每行都一一匹配。

SELECT * FROM STUDENT A CROSS JOIN ADDRESS B

等價於:

SELECT * FROM STUDENT A , ADDRESS B

蝸牛哥:MySQL表連接使用詳解,內連接,外連接,交叉連接

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/268867.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-16 13:12
下一篇 2024-12-16 13:12

相關推薦

發表回復

登錄後才能評論