」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 內聯與外部聯接:有什麼區別,我什麼時候應該使用?

內聯與外部聯接:有什麼區別,我什麼時候應該使用?

發佈於2025-03-23
瀏覽:731

INNER JOIN vs. OUTER JOIN: What's the Difference and When Should I Use Each?

數據庫連接:INNER JOIN 與 OUTER JOIN 的比較

在數據庫操作中,連接操作是組合多個表數據的關鍵。 INNER JOIN 和 OUTER JOIN 是兩種基礎的連接類型。本文將探討它們的關鍵區別以及實際應用。

INNER JOIN:交集

INNER JOIN 選擇在不同表中的兩個或多個列具有匹配值的那些行。從概念上講,它得到兩個集合的交集,用維恩圖的重疊部分錶示。只有同時存在於兩個表中的行才會包含在輸出中。

OUTER JOIN:並集

與 INNER JOIN 不同,OUTER JOIN 包含指定表中的所有行,無論它們在其他表中是否有匹配項。此操作有效地創建了一個並集,用維恩圖的組合區域表示。

OUTER JOIN 的類型

OUTER JOIN 又分為三種類型:

  • LEFT OUTER JOIN: 獲取左側表的所有行以及右側表中任何匹配的行。右側表中在左側表中沒有匹配項的行將包含 NULL 值。
  • RIGHT OUTER JOIN: 與 LEFT OUTER JOIN 類似,但獲取右側表的所有行以及左側表中匹配的行。
  • FULL OUTER JOIN: 組合兩個表的所有行,用 NULL 值填充缺失的匹配項。

實際示例

考慮以下包含客戶及其訂單數據的表:

Customer (id, name)
Orders (id, customer_id, product)

INNER JOIN:

SELECT *
FROM customer
INNER JOIN orders ON customer.id = orders.customer_id;

此查詢將只返回下過訂單的客戶。

LEFT OUTER JOIN:

SELECT *
FROM customer
LEFT OUTER JOIN orders ON customer.id = orders.customer_id;

此查詢將返回所有客戶,包括沒有訂單的客戶,訂單信息將為 NULL 值。

RIGHT OUTER JOIN:

SELECT *
FROM customer
RIGHT OUTER JOIN orders ON customer.id = orders.customer_id;

此查詢將返回所有訂單,包括 Customer 表中不存在的客戶下的訂單,客戶信息將為 NULL 值。

FULL OUTER JOIN:

SELECT *
FROM customer
FULL OUTER JOIN orders ON customer.id = orders.customer_id;

此查詢將返回所有客戶和所有訂單,用 NULL 值填充缺失的匹配項。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3