集合查询
SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。(注意参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。)
查询计算机系的学生及年龄不大于19岁的学生:
select*
from Student
WHERE Sdept='CS'
UNION
SELECT*
FROM Student
WHERE Sage<=19;
使用UNION将多个查询结果合并起来时,系统会自动去掉重复元组。如果要保留重复元组则用UNION ALL操作符。
查询计算机系的学生与年龄不大于19岁的学生的交集:
select*
from Student
WHERE Sdept='CS'
INTERSECT
SELECT*
FROM Student
WHERE Sage<=19;
插入的数据中无满足条件的信息。
该查询也可以用连接查询来完成:
select*
from Student
WHERE Sdept='CS'AND Sage<=19;
查询既选修了课程1有选修了课程2的学生(即查询选修了课程1的学生和选修课程2的学生的交集):
select Sno
FROM SC
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM SC
WHERE Cno='1';
该查询也可以使用嵌套查询来实现:
select Sno
FROM SC
WHERE Cno='1'AND Sno IN
(SELECT Sno
FROM SC
WHERE Cno='2');
查询计算机系的学生与年龄不大于19岁的学生的差集:
select*
from Student
WHERE