SQL的相關語法記錄 【連接】 相關內容參考: 一張圖看懂 SQL 的各種 join 用法_51CTO博客_sql join用法 SQL FULL OUTER JOIN 關鍵字 | 菜鳥教程 (runoob.com) 一文講懂SQL外連接OUTER JOIN - 知乎 (zhihu.com) INN ...
SQL的相關語法記錄
【連接】
相關內容參考:
- 一張圖看懂 SQL 的各種 join 用法_51CTO博客_
sql join
用法 - SQL FULL OUTER JOIN 關鍵字 | 菜鳥教程 (runoob.com)
- 一文講懂SQL外連接OUTER JOIN - 知乎 (zhihu.com)
INNER JOIN
內連接
通過兩個集合的交集部分進行其它數據列的連接:
SELECT *
# 只拿出已經有成績id的科目id來相連接
FROM subject JOIN score ON subject.id = score.id
這種連接方式和以下的代碼達到的效果類似:
SELECT *
FROM subject, score
WHERE subject.id = score.id
LEFT JOIN
左連接
通過左表目標id進行兩表的連接
SELECT *
# 因為右表id中不一定會有左表id的對應順序,因此可能存在null(非交集部分)
FROM subject LEFT JOIN score ON subject.id = score.id
那麼這些左表空部分(LEFT JOIN EXCLUDING INNER JOIN
),便是:
SELECT *
FROM subject LEFT JOIN score ON subject.id = score.id
WHERE score.id IS null
RIGHT JOIN
右連接
和左連接類似,連接的左邊為空部分及兩表交集:
SELECT *
FROM subject RIGHT JOIN score ON subject.id = score.id
右表空部分(RIGHT JOIN EXCLUDING INNER JOIN
):
SELECT *
FROM subject RIGHT JOIN score ON subject.id = score.id
# 註意,因為是以右表為主,因此左表為null的部分才是無交集部分
WHERE subject.id IS null
FULL OUTER JOIN
全外連接
此種連接需註意:MySQL中不支持 FULL OUTER JOIN
,但是SQL Server允許
SELECT *
FROM subject FULL OUTER JOIN score ON subject.id = score.id
當然,如上述用法,除去中心交集的連接也是存在的
SELECT *
FROM subject FULL OUTER JOIN score ON subject.id = score.id
WHERE subject.id IS null OR score.id IS null
···待續···