---- oracle 高級查詢
-- 1.集合操作(並集、交集、補集)
---- <1> union (並集 不重複)
SELECT dept_code,dept_name from base_dept
UNION
SELECT dept_code,dept_name FROM geyy_dept;
---- <2> union all (並集 重複)
SELECT dept_code,dept_name from base_dept
UNION ALL
SELECT dept_code,dept_name FROM geyy_dept;
INSERT INTO geyy_dept(ID,dept_code,dept_name)
SELECT 'E1266A92FCDB813EE040A8C09B006E84','aa','aaa' FROM dual
UNION
SELECT 'E1266A92FCDB813EE040A8C09B006E8y','bb','bbb' FROM dual
---- <3> intersect (交集 返回兩個查詢共有的記錄 .查詢的每個字段都必須相等。包括空值)
------- 例如:如果dept_code 相等。但是dept_name不想等,就查不出來。必須這兩個字段都相等。
SELECT dept_code,dept_name from base_dept
INTERSECT
SELECT dept_code,dept_name FROM geyy_dept;
---- <4> MINUS(返回第一個查詢檢索出的記錄減去第二個查詢檢索出的記錄之後剩餘的記錄)
SELECT dept_code,dept_name from base_dept
MINUS
SELECT dept_code,dept_name FROM geyy_dept;
--- 2. 連接查詢
----- <1> 內連接 (inner join)
--------- 以下三種結果都是一樣的。
SELECT * from base_dept JOIN geyy_dept ON base_dept.id=geyy_dept.id;
SELECT * from base_dept INNER JOIN geyy_dept ON base_dept.id=geyy_dept.id;
SELECT * from base_dept,geyy_dept WHERE base_dept.id=geyy_dept.id;
----- <2> 外連接 (outer join)
--------- Oracle中對兩個表或者若干表之間的外聯接用(+)表示。
--------- 以下三種結果都是一樣的。
SELECT * from base_dept LEFT JOIN geyy_dept ON base_dept.id=geyy_dept.id;
SELECT * from base_dept LEFT OUTER JOIN geyy_dept ON base_dept.id=geyy_dept.id;
SELECT * from base_dept,geyy_dept WHERE base_dept.id=geyy_dept.id(+);
--------- 以下三種結果都是一樣的。
SELECT * from base_dept RIGHT JOIN geyy_dept ON base_dept.id=geyy_dept.id;
SELECT * from base_dept RIGHT OUTER JOIN geyy_dept ON base_dept.id=geyy_dept.id;
SELECT * from base_dept,geyy_dept WHERE base_dept.id(+)=geyy_dept.id;