ORACLE_OCP之SQL_集合操作
-
集合操作准则
- SELECT列表中的表达式必须在数字上匹配。
- 后续查询中每列的数据类型必须与第一个查询中其对应列的数据类型匹配。
- 括号可用于更改执行顺序。
- ORDER BY子句只能出现在语句的最后
-
Oracle服务器和集合运算符
- 除UNION ALL外,所有行都将自动消除。(重复)
- 来自第一个查询的列名将出现在结果中。
- 默认情况下,输出以升序排序,但UNION ALL除外
-
UNION ALL 运算符
- UNION ALL运算符从两个查询返回行,包括所有重复项。
-
SELECT job_id, department_id
FROM employees
UNION ALL
SELECT job_id, department_id
FROM retired_employees
ORDER BY job_id;
-
UNION 操作
- 消除重复后,UNION运算符从两个查询返回行。
-
SELECT job_id
FROM employees
UNION
SELECT job_id
FROM retired_employees
UNION去重,UINON ALL不去重,并且如果缺少对应的列的话,需要找到对应的类型使用to_xxx(null)这种形式进行补充,也可以让语句正确执行
UNION ALL 没有指定的排序方式,但是UNION按照第一个查询中的第一列进行升序排序输出
-
INTERSECT 运算符
- INTERSECT运算符返回两个查询共有的行。
-
SELECT manager_id,department_id
FROM employees
INTERSECT
SELECT manager_id,department_id
FROM retired_employees
-
MINUS 运算符
- MINUS运算符返回第一个查询结果但第二个查询结果集中不存在的所有不同行。
-
SELECT employee_id, job_id
FROM employees
WHERE department_id = 80
MINUS
SELECT employee_id, job_id
FROM retired_employees
WHERE department_id = 90;