
2、表的加法—union
Union:对两个结果集进行并集操作,重复行只取一次,同时进行默认规则的排序。
Unionall:对两个结果集进行并集操作,包括所有重复行,不进行排序。
例:创建如下表dept1,进行集合运算。




3、union all
会包含重复行。

4、交集intersect
即选取两个记录集合中的公共部分。

若希望保留重复行也可以使用intersect all。
5、差集minus

Oracle中差集使用的是minus,db2等数据库使用except来进行差集运算。
注意被减数与减数位置不同得到的结果也不同。

6、集合运算的注意事项
1>作为运算对象的记录的列数必须相同。
2>作为运算对象的记录中列的类型必须一致。列名不必相同,但要类型匹配且顺序要对应,大类型对上就行了,比如char对varchar2,date对timestamp都可以,字段数要等同,不等需要补全。





4> 四种集合运算符优先级按先后出现的顺序执行,如有特殊要求可以使用括号。
5> 集合中order by的用法
A、 缺省情况下,复合查询后的结果集是按所有字段的组合进行排序的(除union all 外),如果不希望缺省的排序,也可以使用order by显示排序。
B、显式order by是参照第一个select语句的列元素。所以,order by后的列名只能是第一个select使用的列名、别名、列号。如果是补全的null值需要order by,则需要使用别名。


