連接查詢是關聯式資料庫的核心。MySQL 支援 `CROSS JOIN`、`INNER JOIN`、`OUTER JOIN` 等多種模式,理解其邏輯執行順序(笛卡爾積 → ON 過濾 → 加外部行)是寫出高效 SQL 的關鍵。
| 類型 | 關鍵字 | 執行步驟 | 結果特徵 |
|---|---|---|---|
| 交叉連接 | CROSS JOIN | 僅步驟1 | 笛卡爾積 M×N 行 |
| 內連接 | INNER JOIN / JOIN | 步驟1+2 | 僅匹配行 |
| 左外連接 | LEFT [OUTER] JOIN | 步驟1+2+3 | 左表全保留,右表無匹配填 NULL |
| 右外連接 | RIGHT [OUTER] JOIN | 步驟1+2+3 | 右表全保留,左表無匹配填 NULL |
-- 1. CROSS JOIN 產生測試資料 SELECT * FROM t1 CROSS JOIN t2; -- 2. 內連接查詢有訂單的用戶 SELECT u.name, o.order_id FROM users u INNER JOIN orders o ON u.id = o.user_id; -- 等價簡寫 SELECT u.name, o.order_id FROM users u JOIN orders o USING(user_id); -- 3. 左外連接查詢所有用戶及其訂單 (無訂單也顯示) SELECT u.name, o.order_id FROM users u LEFT JOIN orders o USING(user_id); -- 4. 自然連接 (自動匹配同名欄位) SELECT * FROM users NATURAL LEFT JOIN orders; -- 5. STRAIGHT_JOIN 強制順序 EXPLAIN SELECT * FROM t1 STRAIGHT_JOIN t2 ON t1.id = t2.id; -- 強制先讀 t1