14、Oracle中的Set运算符
最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。
视频链接:
【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用
如果有侵权,请联系删除,谢谢。
学习目标:
- 描述 SET 操作符
- 将多个查询用 SET 操作符连接组成一个新的查询
- UNION/UNION ALL
- INTERSECT
- MINUS
- 排序:ORDER BY
1、 SET 操作符
1.1、UNION 操作符
UNION 操作符返回两个查询的结果集的
并集
UNION 操作示例
SELECT employee_id, job_id
FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;
1.2、UNION ALL 操作符
UNION ALL 操作符返回两个查询的结果集的
并集。对于两个结果集的重复部分,不去重。
UNION ALL操作shili
SELECT employee_id, job_id, department_id
FROM employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history
ORDER BY employee_id;
1.3、INTERSECT 操作符
INTERSECT 操作符返回两个结果集的
交集
INTERSECT操作示例
SELECT employee_id, job_id
FROM employees
INTERSECT
SELECT employee_id, job_id
FROM job_history;
1.4、MINUS 操作符
MINUS操作符:返回两个结果集的差集
假设有集合A和B,所有属于A且不属于B的元素的集合被称为A与B的差集。
示例:对于集合A = {a, b, c, d}和集合B = {b, c, w},则A与B 的差集为{a, d}
MINUS操作示例
SELECT employee_id,job_id
FROM employees
MINUS
SELECT employee_id,job_id
FROM job_history;
1.5、使用 SET 操作符注意事项
-
在SELECT 列表中的列名和表达式在数量和数据类型上要相对应
-
括号可以改变执行的顺序
-
ORDER BY 子句:
- 只能在语句的最后出现
- 可以使用第一个查询中的列名, 别名或相对位置
-
除 UNION ALL之外,系统会自动将重复的记录删除
-
系统将第一个查询的列名显示在输出中
-
除 UNION ALL之外,系统自动按照第一个查询中的第一个列的升序排列
2、匹配各SELECT 语句举例
SELECT department_id, TO_NUMBER(null)
location, hire_date
FROM employees
UNION
SELECT department_id, location_id, TO_DATE(null)
FROM departments;
SELECT employee_id, job_id,salary
FROM employees
UNION
SELECT employee_id, job_id,0
FROM job_history;
使用相对位置排序举例
COLUMN a_dummy NOPRINT
SELECT 'sing' AS "My dream", 3 a_dummy
FROM dual
UNION
SELECT 'I`d like to teach', 1
FROM dual
UNION
SELECT 'the world to', 2
FROM dual
ORDER BY 2;