目标:
1、了解Set操作符类型
2、学会使用Set操作符使得多个查询形成一个查询
3、对返回的结果如何控制次序
Agenda
一、Set操作符的类型和原则
二、本章使用的两张表
三、学会使用UNION和UNION ALL操作符
四、学会使用INTERSECT操作符
五、学会使用MINUS操作符
六、匹配SELECT查询
七、在ORDER BY子句中使用Set操作符
一、Set操作符的类型和原则
UNION ---> 去掉重复元素
UNION ALL ---> 不考虑重复元素

INTERSECT ---> 取交集,取两个集合共有的部分

MINUS ---> 相减,即减去A中包含于B的元素

Set操作符使用原则
1、两个集合查询的列数要相同
2、查询的次序要相同,只要属于相同的类型组就可以,比如CHAR和VARCHAR2
3、可以使用括号改变优先级
4、ORDER BY只可以出现在查询子句最后
Oracle 中Set操作符特点
1、除了UNION ALL其他三种操作中没有重复行
2、最终的结果使用第一个查询的列名
3、除了UNION ALL其他操作要排序,且为第一列升序排序
二、本章使用的两张表
EMPLOYEES:员工表
JOB_HISTORY:记录员工变更记录
三、学会使用UNION和UNION ALL操作符
UNION 没有重复行
示例:


UNION ALL 含有重复行


四、学会使用INTERSECT操作符
将两个集合中相同的部分返回出来
示例:查看哪些员工变更工作后又变更回来了

五、学会使用MINUS操作符
减去A中包含于B的元素
示例:查询没有变更工作的员工


六、匹配SELECT查询
当两个集合中对应的数据类型不同的是,需要使用TO_CHAR等匹配相同
示例1:


示例2:

七、在ORDER BY子句中使用Set操作符
1、ORDER BY子句放在组合查询最后,且只能出现一次
2、组合查询中每个子查询不能出现单独的ORDER BY子句
3、ORDER BY子句只认识第一个查询的列名
示例1:

即子查询中不能出现单独的ORDER BY子句
示例2:
即ORDER BY子句不认识第二个查询的列名
但是如果想按照第三个次序查询,怎么办?
示例:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30197839/viewspace-1976111/ ,如需转载,请注明出处,否则将追究法律责任。