数据库 · 9 11 月, 2024

深入淺出SQL之左連接、右連接和全連接

深入淺出SQL之左連接、右連接和全連接

在數據庫管理系統中,SQL(結構化查詢語言)是一種用於查詢和操作數據的標準語言。當我們需要從多個表中提取數據時,連接(JOIN)操作是必不可少的。本文將深入淺出地介紹三種常見的連接類型:左連接(LEFT JOIN)、右連接(RIGHT JOIN)和全連接(FULL JOIN),並通過示例來幫助理解它們的用法。

左連接(LEFT JOIN)

左連接是指從左側表中選取所有的記錄,即使在右側表中沒有匹配的記錄。這意味著左側表的所有行都會出現在結果集中,而右側表中沒有匹配的行則會顯示為NULL。

語法

SELECT 列名
FROM 表1
LEFT JOIN 表2
ON 表1.列名 = 表2.列名;

示例

假設有兩個表:學生成績

  • 學生表:
  • 學生ID | 姓名
    1      | 張三
    2      | 李四
    3      | 王五
  • 成績表:
  • 學生ID | 科目 | 成績
    1      | 數學 | 90
    1      | 英文 | 85
    2      | 數學 | 78

如果我們想要查詢所有學生及其成績,可以使用左連接:

SELECT 學生.姓名, 成績.科目, 成績.成績
FROM 學生
LEFT JOIN 成績 ON 學生.學生ID = 成績.學生ID;

結果將顯示所有學生,即使某些學生沒有成績記錄:

姓名 | 科目 | 成績
張三 | 數學 | 90
張三 | 英文 | 85
李四 | 數學 | 78
王五 | NULL | NULL

右連接(RIGHT JOIN)

右連接與左連接相反,它從右側表中選取所有的記錄,即使在左側表中沒有匹配的記錄。這意味著右側表的所有行都會出現在結果集中,而左側表中沒有匹配的行則會顯示為NULL。

語法

SELECT 列名
FROM 表1
RIGHT JOIN 表2
ON 表1.列名 = 表2.列名;

示例

使用相同的學生成績表,如果我們想要查詢所有成績及其對應的學生,可以使用右連接:

SELECT 學生.姓名, 成績.科目, 成績.成績
FROM 學生
RIGHT JOIN 成績 ON 學生.學生ID = 成績.學生ID;

結果將顯示所有成績,即使某些成績沒有對應的學生記錄:

姓名 | 科目 | 成績
張三 | 數學 | 90
張三 | 英文 | 85
李四 | 數學 | 78
NULL | 英文 | NULL

全連接(FULL JOIN)

全連接是左連接和右連接的組合,從兩個表中選取所有的記錄。如果某一側的表中沒有匹配的記錄,則顯示為NULL。

語法

SELECT 列名
FROM 表1
FULL JOIN 表2
ON 表1.列名 = 表2.列名;

示例

如果我們想要查詢所有學生和所有成績,可以使用全連接:

SELECT 學生.姓名, 成績.科目, 成績.成績
FROM 學生
FULL JOIN 成績 ON 學生.學生ID = 成績.學生ID;

結果將顯示所有學生和所有成績,無論是否有匹配:

姓名 | 科目 | 成績
張三 | 數學 | 90
張三 | 英文 | 85
李四 | 數學 | 78
王五 | NULL | NULL
NULL | 英文 | NULL

總結

左連接、右連接和全連接是SQL中非常重要的操作,能夠幫助我們從多個表中提取所需的數據。了解這些連接的使用情境和語法,對於數據庫的操作和管理至關重要。如果您需要高效的數據處理和存儲解決方案,考慮使用香港VPS香港伺服器來支持您的業務需求。