目錄
- 一、JOIN:表連接
- 1.1 INNER JOIN:內連接
- 1.2 LEFT JOIN:左連接
- 1.3 RIGHT JOIN:右連接
- 1.4 FULL JOIN:全連接
- 二、子查詢:嵌套查詢
- 2.1 WHERE 子句中的子查詢
- 2.2 FROM 子句中的子查詢
- 2.3 SELECT 子句中的子查詢
- 三、JOIN 和子查詢的區別
- 3.1 功能差異
- 3.2 性能差異
- 3.3 使用場景
- 四、示例對比
- 4.1 使用 JOIN 獲取每個訂單的客戶信息
- 4.2 使用子查詢獲取每個訂單的客戶信息
- 五、總結
在 MySQL 中,JOIN 和子查詢都是用于處理多表數據的強大工具,但它們在功能和性能上存在顯著差異。理解它們的區別對于編寫高效、可維護的 SQL 查詢至關重要。本文將通過具體代碼示例,詳細解釋 JOIN 和子查詢的區別,并探討它們各自的最佳使用場景。
一、JOIN:表連接
JOIN 用于將兩個或多個表的數據基于某些條件組合在一起。MySQL 支持多種 JOIN 類型,如 INNER JOIN
、LEFT JOIN
、RIGHT JOIN
和 FULL JOIN
。這些 JOIN 在不同場景下各有用途。
1.1 INNER JOIN:內連接
內連接是最常見的 JOIN 類型,它返回兩個表中匹配的記錄。
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
1.2 LEFT JOIN:左連接
左連接返回左邊表的所有記錄,即使右邊表中沒有匹配的記錄。
SELECT orders.order_id, customers.customer_name
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id;
1.3 RIGHT JOIN:右連接
右連接返回右邊表的所有記錄,即使左邊表中沒有匹配的記錄。
SELECT orders.order_id, customers