查詢所有員工及其部門名稱,包含「無部門」員工:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id(+);
employees 為驅動表(全表掃描)。departments 找到 department_id 相同的部門。NULL。結果:所有員工 + 匹配部門或 NULL。
d.department_id)。=),不支援 >、< 等非等值條件。d.location_id = 100),會隱性轉為內部連接,需將條件移至 ON 子句(ANSI 標準)或用 AND d.location_id(+) = 100。SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT JOIN departments d
ON e.department_id = d.department_id;
LEFT JOIN 保留左表所有行。若部門表有重複 department_id(非主鍵),外連接會產生笛卡兒積,員工行數 × 匹配部門行數。若無匹配,仍產生 1 行(NULL)。
LEFT/RIGHT/FULL JOIN。departments.department_id、employees.department_id)以加速查詢。