数据库sql语言学习(九)

数据库的集合运算:

/*

SQL语言也支持传统的集合运算,包括并(UNION)、交(INTERSECT)、差(EXCEPT)


集合运算的常见形式为:
 <元组集表达式> <集合运算符> [ALL] <元组集表达式>


其中<元组集表达式>产生元组的集合,通常是SELECT查询或集合运算的结果
<集合运算符>是UNION、INTERSECT或EXCEPT


与SELECT语句不同,集合运算将自动删除结果中的重复元组。可选的ALL可以用来保留运算结果中的重复元组
与关系代数一样,SQL的集合运算要求参与运算的元组集的列数必须相同,对应列的数据类型也必须相同
集合运算都可以用SELECT查询实现 




*/






-- 查询选修了CS301号课程或者选修了CS306号课程的学生的学号。
SELECT Sno
FROM SC
WHERE Cno= 'CS301'
UNION
SELECT Sno
FROM SC
WHERE Cno= 'CS306';
-- 这等价于:
SELECT DISTINCT Sno
FROM SC
WHERE Cno='CS301' OR Cno='CS306';




-- 查询既选修了CS301号课程, 又选修了CS306号课程的学生的学号。
SELECT Sno
FROM SC
WHERE Cno= 'CS301'
INTERSECT
SELECT Sno
FROM SC
WHERE Cno= 'CS306';


-- 这等价于:
SELECT DISTINCT Sno
FROM SC
WHERE Cno='CS301' AND Sno IN 
(SELECT Sno
 FROM SC 
 WHERE Cno='CS306');




-- 查询选修了CS301号课程, 但未选修CS306号课程的学生的学号
SELECT Sno
FROM SC
WHERE Cno= 'CS301'
EXCEPT
SELECT Sno
FROM SC
WHERE Cno= 'CS306';


-- 这等价于
SELECT DISTINCT Sno
FROM SC
WHERE Cno='CS301' AND Sno NOT IN 
(SELECT Sno
 FROM SC
 WHERE Cno= 'CS306'); 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值