并集:
当A和B没有交集的时候UNION和UNION ALL执行结果是一样的
UNION :A和B都取,公共部分只取一次
UNION ALL:A和B都取,公共部分各取一次。两个集合就取两次,三个就取三次。
交集:
INTERSECT:A和B公共部分
差集:
MINUS:只属于A不属于B的集合
使用集合运算需要注意的是:
1.参与运算的各个集合必须列数相同 且类型一致
2.采用第一个集合的表头作为最后的表头
3.如果排序,必须 在每个集合后使用相同order by
4.括号可以控制优先级
下面这句sql语句是不能成功执行的,因为每个集合的运算的列数不同
select deptno,job,sum(sal) from emp group by deptno,job
union
select deptno,sum(sal) from emp group by deptno
union
select to_char(null),sum(sal) from emp;
如果希望上面的sql语句成功执行,就需要.将集合中不够的列数补上,注意类型也要一致
select deptno,job,sum(sal) from emp group by deptno,job
union
select deptno,to_char(null),sum(sal) from emp group by deptno
union
select to_number(null),to_char(null),sum(sal) from emp;