【集合查询】
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 * |