1
数据库原理与应用技术
1.6.3.5 5.3.5 集合查询
5.3.5 集合查询

集合查询包含并、交、差操作,它与第2章中传统的集合运算并、交、差操作相对应。

集合操作的种类包括并操作UNION、交操作INTERSECT、差操作EXCEPT三种。

UNION:将多种查询结果合并起来时,系统自动去掉重复元组。

UNION ALL:将多种查询结果合并起来时,保留重复元组。

参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。

【例5-48】查询计算机科学系的学生及年龄不大于19岁的学生的并集,写出相关语句。

解:SELECT *

FROM student

WHERE department= '计算机'

UNION

SELECT *

FROM student

WHERE age<=19

结果如图5-46所示。

图5-46 例5-48图

【例5-49】查询选修课程c1的学生集合与选修课程c2的学生集合的交集,写出相关语句。

解:SELECT sno FROM enroll WHERE cno='c1' INTERSECT

SELECT sno FROM enroll WHERE cno='c2'

结果如图5-47所示。

图5-47 例5-49图

INTERSECT返回INTERSECT操作数左右两边的两个查询都返回的重复值。

【例5-50】查询计算机科学系的学生与年龄不大于19岁的学生的差集,写出相关语句。

解:SELECT * FROM student WHERE department='计算机' EXCEPT

SELECT * FROM student WHERE age<=19

结果如图5-48所示。

图5-48 例5-50图

EXCEPT从左查询中返回右查询中没有找到的所有非重复值。