在关系代数中可以用集合的并、交和差来组合关系。SQL也提供了对应的操作,但是查询
的结果必须具有相同的属性和类型列表。保留字UNION、INTERSECT和EXCEPT分别对应u、n和一。保留字用于两个查询时,应该将每个查询分别用括号括起来。
1.UNION 运算
(SELECT Customer-no FROM depositor)
UNION
(SELECT Customer-no FROM borrower)
与SELECT子句不同的是UNION运算自动去除重复,即某客户在银行中有几个账户或贷款(或两者均有),那么在结果集中也只出现一次。如果需要保留重复,必须用UNION ALL,
示例如下:
(SELECT Customer-no FROM depositor)
UNION ALL
(SELECT Customer-no FROM borrower)
2.INTERSECT 运算
分析:本题第一条SELECT语句查询和第二条SELECT语句查询的结果集模式都为(Name,
Address),故可以对它们取交集。
(SELECT N ame,Addre s s
FROM Students
WHERE SEX='女、AND Type='研究生,)
INTERSECT
(SELECT Name,Address
FROM Teachers
WHERE Salary >=2600)
3.EXCEPT 运算
同理,我们也可以对两个相同结果集的关系取差集。
【例8.17]查询不是教师的学生姓名。
(SELECT N ante, Addr e s s FROM Students)
EXCEPT
(SELECT N ame,Addre s s FROM Teachers)