首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 8i/9i 表聯結語法全解析:內聯結、外聯結與完全外聯結

     編輯:Oracle 資料庫基礎

內聯結

-- Oracle 傳統語法
SELECT * FROM a, b WHERE a.id = b.id;

-- ANSI SQL-92 (9i 支援)
SELECT * FROM a INNER JOIN b ON a.id = b.id;

外聯結:Oracle (+) 與 ANSI 標準對照

類型Oracle (+) 語法ANSI 標準 (9i+)結果集
左外聯結WHERE a.id = b.id(+)LEFT OUTER JOIN b ON a.id = b.id所有 A 列 + 對應 B 列 (無對應則 NULL)
右外聯結WHERE a.id(+) = b.idRIGHT OUTER JOIN b ON a.id = b.id所有 B 列 + 對應 A 列
完全外聯結8i 不支援雙向 (+)FULL OUTER JOIN b ON a.id = b.idA 全部 + B 全部

8i 完全外聯結替代寫法

SELECT a.id, b.id FROM a, b WHERE a.id = b.id(+)
UNION
SELECT a.id, b.id FROM a, b WHERE a.id(+) = b.id;

實務範例:員工與部門

-- 左外聯結:所有員工,含未分部門者
SELECT e.last_name, e.department_id, d.department_name
FROM employees e LEFT OUTER JOIN departments d
ON e.department_id = d.department_id;

-- 右外聯結:所有部門,含無員工部門
SELECT e.last_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id;

-- 完全外聯結:員工全集 ∪ 部門全集
SELECT e.last_name, e.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON e.department_id = d.department_id;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved