---- 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;