SQL—使用集合运算符
日期:2019-05-29
作者:chj
集合操作
集合操作注意事项
- 在select列表中的列名和表达式在数量上必须匹配
- 第二个查询中的每一列的数据类型必须与第一个查询其对应的列的数据类型相匹配
- 可以用括号来改变执行顺序
- 除union all 之外,系统会自动删除重复的记录
- 列名为第一个查询返回的结果
- 除union all 之外,系统自动按照第一个查询中的第一个列的升序排列
UNION 操作符
- UNION 操作符返回两个查询的结果集的并集,消除重复行
1.选择的列数必须相同
2.所选列的数据类型必须在相同的数据类型组中(如数字或字符)
3.列的名称不必相同
4.UNION操作选择的所有列
5.在重复检查期间,NULL值不会被忽略
6.默认情况下,输出按照SELECT子句列的升序排序
例:
select deptno from dept
union
select deptno from emp;
DEPTNO
----------
10
20
30
40
UNION ALL操作符
- UNION ALL操作符返回两个查询的结果集的并集,包括所有重复行
例:
select deptno from dept
union all
select deptno from emp;
DEPTNO
----------
10
20
30
40
20
30
30
20
30
30
10
20
10
30
20
30
20
10
18 rows selected.
INTERSECT 操作符
- INTERSECT 操作符返回两个查询公共的行
- 查询中SELECT语句选择的列的数量和数据类型必须与查询中使用的所有SELECT语句相同。但是,列的名称不必相同。
- 颠倒交叉表的顺序不会改变结果。
- INTERSECT不会忽略空值。
例:
elect deptno from dept
intersect
select deptno from emp;
DEPTNO
----------
10
20
30
MINUS 操作符
- MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分就减去相交部分;否则和第一个查询结果没有区别
- 列的数量必须相同,查询中的SELECT语句所选择的列的数据类型必须属于查询中使用的所有SELECT语句中的相同数据类型组。但是,列的名称不必相同。
例:
select deptno from dept
minus
select deptno from emp;
DEPTNO
----------
40