sql集合查询
并UNION
查询计算机科学系的学生及年龄小于 19 岁的学生
方法一:
SELECT *
FROM student
WHERE Sdept='CS' OR Sage<19;
方法二:
SELECT *
FROM student
WHERE Sdept='CS'
UNION
SELECT *
FROM student
WHERE Sage<19;
-
UNION
自动取出重复元素
-
UNION ALL
保留重复元素
查询选修了课程 1 或者选修了课程 2 的学生
SELECT Sno
FROM sc
WHERE Cno='1'
UNION
SELECT Sno
FROM sc
WHERE Cno='2';
交INTERSECT
查询计算机科学系的学生与年龄不大于 19 岁的学生的交集
mysql不支持集合交集查询
SELECT *
FROM student
WHERE Sdept='CS'
INTERSECT
SELECT *
FROM student
WHERE Sage<=19;
实际可以用WHERE语句中AND条件实现
SELECT *
FROM student
WHERE Sdept='CS' AND Sage<=19;
查询选修课程 1 的学生集合与选修课程 2 的学生集合的交集
SELECT Sno
FROM sc
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM sc
WHERE Cno='2';
实际是查询既选择修了课程1又选修课程2的学生
SELECT Sno
FROM sc
WHERE Cno='1' AND Sno IN (
SELECT Sno
FROM sc
WHERE Cno='2'
);
差EXCEPT
查询计算机科学系的学生与年龄不大于 19 岁的 学生的差集
SELECT *
FROM student
WHERE Sdept='CS'
EXCEPT
SELECT *
FROM student
WHERE Sage<=19;
实际上是查询计算机系中年龄大于19岁的学生
SELECT *
FROM student
WHERE Sdept='CS' AND Sage>19;