SQL单表查询实例:并集、交集与差集操作详解

1 下载量 160 浏览量 更新于2024-08-30 收藏 57KB PDF 举报
在SQL数据查询中,单表查询是基础操作,特别是当涉及到集合查询时,理解并操作UNION、INTERSECT和EXCEPT是至关重要的。这些集合操作符用于合并、筛选或排除查询结果中的重复元素,使得数据检索更加灵活和精确。 1. **并操作 (UNION)**: UNION 是用来合并两个或更多 SELECT 查询的结果集,返回的是所有不同记录的集合,去除了重复项。例如,当你想要查找年龄小于等于19岁的学生以及CS系的学生时,可以分别执行两个查询并用 UNION 合并: ```sql SELECT * FROM Student WHERE Sage <= 19 UNION SELECT * FROM Student WHERE Sdept = 'CS' ``` 这里,`OR` 表示逻辑上的并集,而 `UNION` 实际上达到了同样的效果,即合并两个查询结果,只显示不重复的数据。 2. **交操作 (INTERSECT)**: INTERSECT 操作返回两个查询结果集中都存在的非重复记录。例如,要找出既年龄不大于19岁又为CS系的学生,可以这样写: ```sql SELECT * FROM Student WHERE Sage <= 19 AND Sdept = 'CS' ``` 或者使用 INTERSECT 来确保两个条件同时满足: ```sql SELECT * FROM Student WHERE Sage <= 19 INTERSECT SELECT * FROM Student WHERE Sdept = 'CS' ``` 3. **差操作 (EXCEPT)**: EXCEPT 与 INTERSECT 相反,它返回第一个查询结果中但不在第二个查询结果中的记录。这意味着它排除了第二个查询中包含的记录。例如,如果你想查看除了CS系外其他所有系的学生,可以这样做: ```sql SELECT * FROM Student WHERE Sage <= 19 EXCEPT SELECT * FROM Student WHERE Sdept = 'CS' ``` 在实际应用中,比如在“教学管理”数据库JXGL中,这些集合操作可以用来查询学生选课情况,如查找某个学生的所有选课记录,或者找出某个课程被哪些系的学生选修等。通过组合这些操作,可以更精细地控制数据的筛选和汇总,提高查询效率和数据一致性。