視頻約120秒。碎片時間,關注收藏。
JOIN 表連接
SELECT 語句不限於從單個表中查詢數據,也可以將多個表連接在一起,連接表的過程稱為 JOIN。SQL 提供了多種連接,比如內連接和外連接等。
JOIN 表連接類型
備註:未展示交叉連接和自連接。
JOIN 表連接類型詳解
備註:OUTER 可選。MySQL 中不支持全連接,可以使用左外連接 + UNION + 右外連接的方式實現。
JOIN 表連接語法
<code>SELECT 列名1,列名2 FROM 表名1 (INNER/LEFT/RIGHT/FULL) JOIN 表名2/<code>
表連接的意義在於在水平方向上合併兩個或多個數據集,併產生一個結果數據集。
INNER JOIN 內連接詳解
內連接 INNER JOIN 通過兩列之間的關係連接兩個或多個表。
假設有兩個表:表R、表S,分別有4行數據。表R:(5,6,7,8),表S:(7,8,9,1)。當表R使用內連接與表S連接時,得到的結果是(7,8),它表示表R與表S的交集。
LEFT JOIN 左外連接詳解
左連接 LEFT JOIN 將返回左表中的所有行,不管右表是否存在匹配的行。
假設有兩個表:表R、表S,分別有4行數據。表R:(5,6,7,8),表S:(7,8,9,1)。當表R使用左外連接與表S連接時,得到的結果是(5,6,7,8)。
RIGHT JOIN 右外連接詳解
右連接 RIGHT JOIN 將返回右表中的所有行,不管左表是否存在匹配的行。
假設有兩個表:表R、表S,分別有4行數據。表R:(5,6,7,8),表S:(7,8,9,1)。當表R使用右外連接與表S連接時,得到的結果是(7,8,9,1)。
FULL JOIN 全外連接詳解
完全外連接 FULL JOIN 包含連接表中的所有行,若無匹配行,用 NULL 值填充。
假設有兩個表:表R、表S,分別有4行數據。表R:(5,6,7,8),表S:(7,8,9,1)。當表R使用全外連接與表S連接時,得到的結果是(5,6,7,8,9,1)。
JOIN 表連接使用示例
假設學生基礎信息表A和學生選修課程表B,包含以下幾個字段:
其中,各字段定義為:sid為學生ID、name為姓名、gender為性別,age為年齡,course為選修課程。
INNER JOIN 內連接示例
<code>SELECT COUNT(DISTINCT(A.sid)) AS s_cnt FROM A JOIN B ON A.sid = B.sid /<code>
該語句查詢有選修記錄的學生數。
LEFT JOIN 左外連接示例
<code>SELECT A.sid, A.s_name, B.course FROM A LEFT JOIN B ON A.sid = B.sid ORDER BY A.sid/<code>
該語句查詢所有學生的選課明細記錄。匹配不到的行會用NULL 填充。
碎片時間,關注收藏。
往期視頻: