数据库章节4.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库章节4

4、嵌套查询 在一个查询语句中嵌套了另一个查询语句 无关子查询 相关子查询 联机视图 (1)无关子查询举例 父查询与子查询相互独立,子查询语句不依赖父查询中返回的任何记录,可以独立执行 查询没有选修课程的所有学生的学号和姓名 Select s#,sname From student Where s# NOT IN ( select distinct s# From sc) 子查询返回选修了课程的学生学号集合,它与外层的查询无依赖关系,可以单独执行 无关子查询一般与IN一起使用,用于返回一个值列表 (2)相关子查询举例 相关子查询的结果依赖于父查询的返回值 查询选修了课程的学生学号和姓名 Select s#, sname From student Where EXISTS (Select * From sc Where sc.s# = student.s#) 相关子查询不可单独执行,依赖于外层查询 EXISTS(子查询):当子查询返回结果非空时为真,否则为假 执行分析:对于student的每一行,根据该行的s#去sc中查找有无匹配记录 (3)联机视图 子查询出现在From子句中作为表使用 查询只选修了1门或2门课程的学生学号、姓名和课程数 Select s#, count_c# From (Select s# as s#, count(s#) as count_c# From sc Group by s#) SC2, student Where sc2.s# = student.s# and (count_c#=1 OR count_c#=2) 联机视图可以和其它表一样使用 学号+课程数 5、查询结果的连接 Union和Union All Minus Intersect (1)Union和Union All 查询课程平均成绩在90分以上或者年龄小于16的学生学号 (Select s# From student where age16) UNION (Select s# From (Select s#, AVG(score) From SC group by s# having avg(score)90) SC2 ) UNION操作自动去除重复记录 Union All操作不去除重复记录 (2)Minus操作:差 查询未选修课程的学生学号 (Select s# From Student) Minus (Select distinct s# From SC) (3)Intersect操作 返回两个查询结果的交集 查询课程平均成绩在90分以上并且年龄小于16的学生学号 (Select s# From student where age16) Intersect (Select s# From (Select s#, AVG(score) From SC group by s# having avg(score)90) SC2 ) 五、视图(View) 视图(View)给出了SQL数据库的外模式定义 外模式 概念模式 内模式 关系子模式 关系模式 存储模式 视图(View) 基本表 文件 SQL用户 ANSI/SPARC 关系数据库 SQL数据库 1、视图的概念 视图是从一个或几个基本表中导出的虚拟表,其数据没有实际存储,但可以和表一样操作 视图具有和表一样的逻辑结构定义 但视图没有相应的存储文件,而每个表都有相应的存储文件 2、视图的用途 逻辑数据独立性 简化了用户眼中的数据,使用户可以集中于所关心的数据上 同一数据库对不同用户提供不同的数据呈现方式 安全保护 S# Sname Age 001 S1 22 002 S2 21 S# C# score 001 C1 88 002 C2 99 Sno Name Cno score 视图定义 用户程序 视图 表 用户 3、视图的定义 Create View 视图名(列名1,列名2,…) AS 查询 [With Read Only] 查询是一个Select语句,指明视图定义在哪些基本表上,定义了什么内容的数据 列名表定义了视图的逻辑结构,与查询中返回的数据相对应 若加上With Read Only选项表示所定义的视图是只读视图 3、视图的定义 例1:定义计算机系的学生视图 Create View cs_view (sno, name, age) As Select s#,sname,age From student Where Dept=‘计算机系‘ Create View cs_

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档