/*******************************集合查询***************************************/
--参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同
--查询经济学院的学生 及 年龄不大于22岁的学生。
SELECT *
FROM 学生选课.学生
WHERE 学生.院系号 =
(SELECT 院系号
FROM 学生选课.院系
WHERE 院系.名称='经济学院'
)
UNION
SELECT *
FROM 学生选课.学生
WHERE 学生.年龄<=22;
--使用UNION 系统会自动去掉重复元组 保留重复元组用 UNION ALL
--查询信息学院的学生 与 年龄不大于22岁的学生的交集
SELECT *
FROM 学生选课.学生
WHERE 学生.院系号 =
(SELECT 院系号
FROM 学生选课.院系
WHERE 院系.名称='信息学院'
)
INTERSECT
SELECT *
FROM 学生选课.学生
WHERE 学生.年龄<=22;
--查询既选修了课程0001又选修了课程0006的学生
SELECT *
FROM 学生选课.学生
WHERE 学号 IN
(SELECT 学号
FROM 学生选课.选课
WHERE 选课.课程号='0001'
)
INTERSECT
SELECT *
FROM 学生选课.学生
WHERE 学号 IN
(SELECT 学号
FROM 学生选课.选课
WHERE 选课.课程号='0006'
);
--查询法学院的学生 与 年龄不大于22岁的学生的差集
SELECT *
FROM 学生选课.学生
WHERE 学生.院系号 =
(SELECT 院系号
FROM 学生选课.院系
WHERE 院系.名称='法学院'
)
EXCEPT
SELECT *
FROM 学生选课.学生
WHERE 学生.年龄<=22;
--参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同
--查询经济学院的学生 及 年龄不大于22岁的学生。
SELECT *
FROM 学生选课.学生
WHERE 学生.院系号 =
(SELECT 院系号
FROM 学生选课.院系
WHERE 院系.名称='经济学院'
)
UNION
SELECT *
FROM 学生选课.学生
WHERE 学生.年龄<=22;
--使用UNION 系统会自动去掉重复元组 保留重复元组用 UNION ALL
--查询信息学院的学生 与 年龄不大于22岁的学生的交集
SELECT *
FROM 学生选课.学生
WHERE 学生.院系号 =
(SELECT 院系号
FROM 学生选课.院系
WHERE 院系.名称='信息学院'
)
INTERSECT
SELECT *
FROM 学生选课.学生
WHERE 学生.年龄<=22;
--查询既选修了课程0001又选修了课程0006的学生
SELECT *
FROM 学生选课.学生
WHERE 学号 IN
(SELECT 学号
FROM 学生选课.选课
WHERE 选课.课程号='0001'
)
INTERSECT
SELECT *
FROM 学生选课.学生
WHERE 学号 IN
(SELECT 学号
FROM 学生选课.选课
WHERE 选课.课程号='0006'
);
--查询法学院的学生 与 年龄不大于22岁的学生的差集
SELECT *
FROM 学生选课.学生
WHERE 学生.院系号 =
(SELECT 院系号
FROM 学生选课.院系
WHERE 院系.名称='法学院'
)
EXCEPT
SELECT *
FROM 学生选课.学生
WHERE 学生.年龄<=22;