MySQL高級查詢——連接查詢實例詳解

前言

我們使用SQL查詢不能只使用很簡單、最基礎(chǔ)的SELECT語句查詢。如果想從多個表查詢比較復(fù)雜的信息,就會使用高級查詢實現(xiàn)。常見的高級查詢包括多表連接查詢、內(nèi)連接查詢、外連接查詢與組合查詢等,今天我們先來學(xué)習(xí)最常用、面試也很容易被問到的連接查詢。
我們今天以一個簡單的學(xué)生信息表(學(xué)生ID、學(xué)生姓名、學(xué)生性別)與一個學(xué)生成績表(學(xué)生ID、學(xué)生成績、成績等級)作演示:
student_info表:

student_score表:

一、內(nèi)連接(INNER JOIN)

1、等值連接

概述:指使用等號"="比較兩個表的連接列的值,相當(dāng)于兩表執(zhí)行笛卡爾后,取兩表連結(jié)列值相等的記錄。
語法:

SELECT 列  
FROM 表1 INNER JOIN 表2  
ON 表1.列 = 表2.列  

示例:

SELECT A.*, B.*  
FROM student_info A inner join student_score B  
ON A.student_id = B.student_id  

結(jié)果:

2、非等值連接

概述:指使用大于號">"或小于號"<"比較兩個表的連接列的值,相當(dāng)于兩表執(zhí)行笛卡爾后,取一個表大于或小于另一個表的連結(jié)列值的記錄。
語法:

SELECT 列  
FROM 表1 INNER JOIN 表2  
ON 表1.列 <> 表2.列  

示例:

SELECT A.*, B.*  
FROM student_info A inner join student_score B  
ON A.student_id > B.student_id  

二、外聯(lián)結(jié)

1、左外連接(LEFT OUTER JOIN)

概述:指將左表的所有記錄與右表符合條件的記錄,返回的結(jié)果除內(nèi)連接的結(jié)果,還有左表不符合條件的記錄,并在右表相應(yīng)列中填NULL。
示例:

SELECT A.*,B.*
FROM student_info A LEFT JOIN student_score B
ON A.`student_id`=B.`student_id`

結(jié)果:


2、右外連接(RIGHT OUTER JOIN)

概述:與左外連接相反,指將右表的所有記錄與左表符合條件的記錄,返回的結(jié)果除內(nèi)連接的結(jié)果,還有右表不符合條件的記錄,并在左表相應(yīng)列中填NULL。
示例:

SELECT A.*,B.*
FROM student_info A RIGHT JOIN student_score B
ON A.`student_id`=B.`student_id`

3、全外連接(FULL JOIN)——MySQL不支持

概述:指將左表所有記錄與右表所有記錄進行連接,返回的結(jié)果除內(nèi)連接的結(jié)果,還有左表與右表不符合條件的記錄,并在左表與右表相應(yīng)列中填NULL。

三、自然連接(NATURAL JOIN)

概述:指自動將表中相同名稱的列進行記錄匹配。
示例:

SELECT A.*, B.*  
FROM student_info A NATURAL JOIN student_score B  

四、自連接

概述:指用表的別名實現(xiàn)表自身的連接。
示例:

SELECT B.*  
FROM student_score A, student_score B  
WHERE A.student_id = B.student_id  
AND B.student_score > 80  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容