3.4.4 集合查询
SELECT语句的查询结果是元组的集合,所以多个SELECT语句的查询结果可以进行集合操作。集合操作主要包括UNION(并操作)、INTERSECT(交操作)和EXCEPT(差操作),其基本格式如下:
说明:
query_expression:查询表达式;
UNION[ALL]:指定合并多个结果集并将其作为单个结果集返回。ALL:将全部行都纳入结果集,包括重复行。如果未指定ALL,则删除重复行;
EXCEPT:返回由EXCEPT运算符左侧的查询返回的所有非重复值。返回这些值的前提是右侧查询不返回这些值;
INTERSECT:返回由INTERSECT运算符左侧和右侧的查询都返回的所有非重复值。
(1)UNION(并操作)
【例3.60】 查询选修了课程“C001”或者选修了课程“C002”的学号。
SELECT Sno FROM SCWHERE Cno=C001
UNION
SELECT Sno FROM SCWHERE Cno=C002;
该查询要求也可以使用下述语句:
SELECT Sno
FROM SC
WHERE Cno=C001 OR Cno=C002;
(2)INTERSECT(交操作)
【例3.61】 查询既选修了课程“C001”又选修了课程“C002”的学号。
SELECT Sno FROM SCWHERE Cno=C001
INTERSECT
SELECT Sno FROM SCWHERE Cno=C002;
该查询要求也可以使用下述语句:
(3)差操作EXCEPT
【例3.62】 查询选修课程了“C001”但没有选修课程“C002”的学号。
SELECT Sno FROM SCWHERE Cno=C001
EXCEPT
SELECT Sno FROM SCWHERE Cno=C002;
该查询要求也可以使用下述语句: