第三章关系数据库标准语言SQL 3 集合查询数据更新
3.4 查 询 3.4.1 单表查询 3.4.2 连接查询 3.4.3 嵌套查询 3.4.4 集合查询 3.4.5 SELECT语句的一般格式 3.4.4 集合查询 标准SQL直接支持的集合操作种类 并操作(UNION) 一般商用数据库支持的集合操作种类 并操作(UNION) 交操作(INTERSECT) 差操作(MINUS) 1. 并操作 形式 查询块 UNION 查询块 参加UNION操作的各结果表的列数必须相同;对应项的数据类型也必须相同 并操作(续) [例48] 查询计算机科学系的学生及年龄不大于19岁的学生。 方法一: SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage=19; 并操作(续) 方法二: SELECT DISTINCT * FROM Student WHERE Sdept= CS OR Sage=19; 并操作(续) [例49] 查询选修了课程1或者选修了课程2的学生。 方法一: SELECT Sno FROM SC WHERE Cno= 1 UNION SELECT Sno FROM SC WHERE Cno= 2 ; 并操作(续) 方法二: SELECT DISTINCT Sno FROM SC WHERE Cno= 1 OR Cno= 2 ; 2. 交操作 标准SQL中没有提供集合交操作,但可用其他方法间接实现。 2. 交操作 [例50] 查询计算机科学系的学生与年龄不大于19岁的学生的交集 本例实际上就是查询计算机科学系中年龄不大于19岁的学生 SELECT * FROM Student WHERE Sdept= CS AND Sage=19; 交操作(续) [例51] 查询选修课程1的学生集合与选修课程2的学生集合的交集 本例实际上是查询既选修了课程1又选修了课程2的学生 SELECT Sno FROM SC WHERE Cno= 1 AND Sno IN (SELECT Sno FROM SC WHERE Cno= 2 ); 3. 差操作 标准SQL中没有提供集合差操作,但可用其他方法间接实现。 3. 差操作 [例52] 查询计算机科学系的学生与年龄不大于19岁的学生的差集。 本例实际上是查询计算机科学系中年龄大于19岁的学生 SELECT * FROM Student WHERE Sdept= CS AND Sage19; 4. 对集合操作结果的排序 ORDER BY子句只能用于对最终查询结果排序,不能对中间结果排序 任何情况下,ORDER BY子句只能出现在最后 对集合操作结果排序时,ORDER BY子句中用数字指定排序属性 对集合操作结果的排序(续) [例] 错误写法 SELECT * FROM Student WHERE Sdept= CS ORDER BY Sno UNION SELECT * FROM Student WHERE Sage=19 ORDER BY Sno; 对集合操作结果的排序(续) 正确写法 SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage=19 ORDER BY 1; 3.4.6 SELECT语句的一般格式 SELECT [ALL|DISTINCT] 目标列表达式 [别名] [ ,
原创力文档

文档评论(0)