网站大量收购独家精品文档,联系QQ:2885784924

第5章视图和索引要点.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库原理与应用 (第2版) 人民邮电出版社 第5章 视图和索引 5.1 视图 5.2 索引 5.1 视图 5.1.1 基本概念 5.1.2 定义视图 5.1.3 通过视图查询数据 5.1.4 修改和删除视图 5.1.5 视图的作用 5.1.1 基本概念 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,是基本表的部分行和列数据的组合。 视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基本表中。 基本表中的数据如果发生变化,从视图中查询出的数据也会随之变化。 基本概念(续) 视图可以从一个基本表中提取数据,也可以从多个基本表中提取数据,甚至还可以从其他视图中提取数据,构成新的视图。 对视图数据的操作最终都会转换为对基本表的操作。 基本概念(续) 5.1.2 定义视图 定义视图的格式如下: CREATE VIEW 视图名 [(列名[ ,...n ] )] AS 查询语句 查询语句中通常不包含ORDER BY和DISTINCT子句。 在定义视图时要么指定视图的全部列名,要么全部省略不写,不能只写视图的部分列名。 必须明确指定视图所有列名的情况 某个目标列不是简单的列名,而是函数或表达式。 多表连接时选出了几个同名列作为视图的字段。 需要在视图中为某个列选用新的更合适的列名。 1.定义单源表视图 视图的数据取自一个表的部分行和列。 例1 建立查询信息管理系学生的学号、姓名、性别和年龄的视图。 CREATE VIEW IS_Student AS SELECT Sno, Sname, Ssex, Sage FROM Student WHERE Sdept = 信息管理系 2.定义多源表视图 例2 建立信息管理系选修了C001课程的学生的学号、姓名和成绩的视图。 CREATE VIEW V_IS_S1(Sno, Sname, Grade) AS SELECT Student.Sno, Sname, Grade FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Sdept = 信息管理系 AND SC.Cno = C001 例8 3.在已有视图上定义新视图 例3 利用例1建立的视图,建立查询信息管理系年龄小于20的学生的学号、姓名和年龄的视图。 CREATE VIEW IS_Student_Sage AS SELECT Sno, Sname, Sage FROM IS_Student WHERE Sage 20 IS_Student 视图的来源是视图和基本表的组合 例4 在例1所建的视图基础上,例2的视图定义可改为: CREATE VIEW V_IS_S2(Sno, Sname, Grade) AS SELECT SC.Sno, Sname, Grade FROM IS_Student JOIN SC ON IS_Student.Sno = SC.Sno WHERE Cno = C001 4.定义带表达式的视图 在定义视图时可以根据需要设置一些派生属性列,在这些派生属性列中保存经过计算的值。 这些派生属性被称为虚拟列。 包含虚拟列的视图也称为带表达式的视图。 例5 定义一个查询学生出生年份的视图。 CREATE VIEW BT_S(Sno, Sname, Sbirth) AS SELECT Sno, Sname, 2011-Sage FROM Student 5.含分组统计信息的视图 定义视图的查询语句中含有GROUP BY子句,这样的视图只能用于查询,不能用于修改数据。 例6 定义一个查询每个学生的学号及平均成绩的视图。 CREATE VIEW S_G(Sno, AverageGrade) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno 5.1.3 通过视图查询数据 通过视图查询数据同基本表一样。 例7 利用例1建立的视图,查询信息管理系男生的信息。 SELECT * FROM IS_Student WHERE Ssex = 男 最终转换成的实际查询: SELECT Sno, Sname, Ssex, Sage FROM Student WHERE Sdept = 信息管理系 AND Ssex = 男 通过视图查询数据(续) 例8 查询信息管理系选修了C001课程且成绩大于等于60的学生的学号、姓名和成绩。 SELECT * FROM V_I

文档评论(0)

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

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

版权声明书
用户编号:5341224344000002

1亿VIP精品文档

相关文档