3.4.4 集合查询

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;

该查询要求也可以使用下述语句: