【集合查询】
SELECT
语句的查询结果是元组的集合,因此多个 SELECT
语句的结果可进行集合操作
集合操作主要包括并操作 UNION
、交操作 INTERSECT
、差操作 EXCEPT
需要注意的是,参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同
从本质上来讲,UNION
操作就是多个条件进行 OR
,INTERSECT
操作就是多个条件进行 AND
由于并、交、差操作是二元运算,因此在 SQL 中默认从左到右顺序运算,此外,当涉及到三个及以上的元组集合操作时,并、差操作交换操作顺序不改变最后的结果,但差操作交换操作顺序会改变最终结果
考虑到集合操作的运算顺序,在实际应用中,大多数数据库并不支持 INTERSECT
操作和 EXCEPT
操作,一般利用 AND
、OR
、NOT
操作来对条件进行操作,变相的完成集合运算
【并操作】
UNION
短语将多个查询结果取并集,同时,系统会自动去掉重复元组
例如,查询 CS 系的学生与年龄不大于 20 岁的学生的全部信息
1 | SELECT * |
实际上相当如下语句
1 | SELECT * |
如果想要在合并时保留重复元组,则需要加上 ALL
短语
例如,查询 CS 系的学生与年龄不大于 20 岁的学生的全部信息,要求保留重复元组
1 | SELECT * |
【交操作】
INTERSECT
短语将多个查询结果取交集
例如,查询 CS 系的年龄不大于 20 岁的学生的全部信息
1 | SELECT * |
实际上相当如下语句
1 | SELECT * |
【差操作】
EXCEPT
短语将多个查询结果起来取差集
例如,查询 CS 系的年龄大于 20 岁的学生的全部信息
1 | SELECT * |
实际上相当于以下语句
1 | SELECT * |