- 1、本文档共137页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 对视图的查询将转换为对基本表的查询,称为视图的消解(View Resolution)。 例 在电商系学生视图中找出年龄小于20岁的学生 SELECT sno,age FROM ec_student WHERE age20 DBMS执行此查询时,将其与ec_student视图定义中的子查询 :select sno,sname,age from Student WHERE dept=‘ec’结合起来,转换成对基本表Student的查询,修正后的查询语句为: SELECT sno,age FROM student WHERE dept=‘ec’ AND age20 查询视图 * 视图是定义在基本上的虚表,它可以和其他基本表一起使用,实现连接查询或嵌套查询。这也就是说,在关系数据库的三级模式结构中,外模式不仅包括视图,而且还可以包括一些基本表。 例 查询电商系选修了1号课程的学生 SELECT sc.sno,sname FROM ec_student,scWHERE ec_student.sno=sc.sno AND sc.cno=001 本查询涉及虚表ec_student和基本表sc,通过这两个表的连接来完成用户请求。 查询视图 * 更新视图包括插入(INSERT)、删除(DELETE)和修改(UPDATE)三类操作。对视图的更新,最终要转换为对基本表的更新。 为防止用户通过视图对数据进行增删改时,无意或故意操作不属于视图范围内的基本表数据,可在定义视图时加上WITH CHECK OPTION子句. 例 将电商系学生视图ec_student中学号为020011的学生姓名改为“李四” UPDATE ec_student SET sname=‘李四’ WHERE sno=‘020011 更新视图 * 关于更新的限制: 并非所有的视图都可更新,有些视图的更新不能唯一地有意义地转换成对相应基本表的更新。 1、 若视图是由两个以上基本表导出的,则此视图不允许更新。 2、若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。 3、若视图的字段来自集函数,则此视图不允许更新。 4、若视图定义中含有GROUP BY子句,则此视图不允许更新。 5、若视图定义中含有DISTINCT短语,则此视图不允许更新。 * 1. 视图能够简化用户的操作 视图机制使用户可以将注意力集中在他所关心的数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使用户眼中的数据库结构简单、清晰,并且可以简化用户的数据查询操作。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐蔽起来了。换句话说,也就是用户所做的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无需了解。 2. 视图使用户能以多种角度看待同一数据 视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户使用同一个数据库时,这种灵活性是非常重要的。 视图的作用 * 3. 视图对重构数据库提供了一定程度的逻辑独立性 在关系数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个表“垂直”地分成多个表。例如:将学生关系 Student(Sno, Sname, Ssex, Sage, Sdept)分为 SX(Sno, Sname, Sage) 和 SY(Sno, Ssex, Sdept) 两个关系。这时原表Student为SX表和SY表自然连接的结果。如果我们建立一个视图Student: CREATE VIEW Student(Sno, Sname, Ssex, Sage, Sdept) AS SELECT SX.Sno, SX.Sname, SY.Ssex, SX.Sage, SY.Sdept FROM SX, SY WHERE SX.Sno=SY.Sno 这样尽管数据库的逻辑结构改变了,但应用程序并不必修改,因为新建立的视图定义了用户原来的关系,使用户的外模式保持不变,用户的应用程序通过视图仍能查找数据。 * 4. 视图能够对机密数据提供安全保护 有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应看到这些数据的用户视图上,这样就由视图的机制自动提供了对机密数据的安全保护功能。例如Student表涉及三个系的学生数据,可以在其上定义三个视图,每个视图只包含一个系的学生数据,并只允许每个系的学生查询自己所在系的学生视图。 * 3.7 嵌入式SQL 和交互式SQL不同,它是将SQL语言嵌入到某种高级语言中,利用高级语言的过程性结构来弥补SQL的不足. 本部分做
文档评论(0)