20150105第5版第3章关系数据库标准语言SQL.pptVIP

  • 29
  • 0
  • 约 84页
  • 2016-12-03 发布于重庆
  • 举报

20150105第5版第3章关系数据库标准语言SQL.ppt

20150105第5版第3章关系数据库标准语言SQL

基于派生表的查询 派生表是一种从查询表达式派生出虚拟结果表的表达式. 派生表与其他表一样出现在查询的FROM子句中.派生表仅存在于外部查询中. 使用派生一的一般形式如下: FROM (SELECT * FROM TA WHERE ...) AS T 基于派生表的查询 派生出来的表必须是一个有效的表.因此,它必须遵守以下几条规则: 1. 所有列必须要有名称 2. 列名称必须是要唯一 3. 不允许使用ORDER BY(除非指定了TOP) 带有EXISTS谓词的子查询(续)? 用NOT EXISTS谓词表示: SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SCY.Sno = 201215122 AND NOT EXISTS (SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno)); 3.4 数据查询 3.4.1 单表查询 3.4.2 连接查询 3.4.3 嵌套查询 3.4.4 集合查询 3.4.5基于派生表的查询 3.4.5 Select语句的一般形式 3.4.4 集合查询 集合操作的种类 并操作UNION 交操作INTERSECT 差操作EXCEPT 参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同 集合查询(续) [例 3.64] 查询计算机科学系的学生及年龄不大于19岁的学生。 SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage=19; UNION:将多个查询结果合并起来时,系统自动去掉重复元组 UNION ALL:将多个查询结果合并起来时,保留重复元组 集合查询(续) [例 3.65] 查询选修了课程1或者选修了课程2的学生。 SELECT Sno FROM SC WHERE Cno= 1 UNION SELECT Sno FROM SC WHERE Cno= 2 ; 集合查询(续) [例3.66] 查询计算机科学系的学生与年龄不大于19岁的学生 的交集。 SELECT * FROM Student WHERE Sdept=CS INTERSECT SELECT * FROM Student WHERE Sage=19 集合查询(续) [例 3.66] 实际上就是查询计算机科学系中年龄不大 于19岁的学生。 SELECT * FROM Student WHERE Sdept= CS AND Sage=19; 集合查询(续) [例 3.67]查询既选修了课程1又选修了课程2的学生。 SELECT Sno FROM SC WHERE Cno= 1 INTERSECT SELECT Sno FROM SC WHERE Cno=2 ; 集合查询(续) [例3.67]也可以表示为: SELECT Sno FROM SC WHERE Cno= 1 AND Sno IN (SELECT Sno FROM SC

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档