欢迎来到天天文库
浏览记录
ID:46279038
大小:225.00 KB
页数:37页
时间:2019-11-22
《学习与管饭的我的笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、视图的概念视图是从一个或多个表(或视图)导出的虚拟表。视图是数据库的用户使用数据库的观点。视图与表(有时为与视图区别,也称表为基本表——BaseTable)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。使用视图的优点提供最新的数据。具有更好的安全性,有利于提高数据库逻辑独立性。针对性强。建立视图的四种类型表中列的子集表中行的子集两个或多个表的连接聚集信息使用视图的一些限制列数不能超过1024列。不能跨数据库引用列。只能访问视图定义所涉及到的列。通过视图操纵数据时不能违背
2、建立表时所建立的约束。视图最多嵌套32层。定义视图时不能使用ORDERBY语句。建立视图用CREATEVIEW语句创建用企业管理器创建使用视图向导创建CREATEVIEW语句CREATEVIEW<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITHCHECKOPTION]/*透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)*/说明DBMS执行CREATEVIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。组成视图的属性列名省略全部列:由子查询中SELECT目
3、标列中的诸字段组成。明确指定视图的所有列名:某个目标列是集函数或列表达式目标列为*多表连接时选出了几个同名列作为视图的字段需要在视图中为某个列启用新的更合适的名字行列子集视图[例]建立信息系学生的视图。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS';从单个基本表导出,只是去掉了基本表的某些行和某些列,保留了码。WITHCHECKOPTION的视图[例2]建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。CREATEVIEWIS_StudentASSELECTSno,
4、Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;对IS_Student视图的更新操作修改操作:DBMS自动加上Sdept='IS'的条件删除操作:DBMS自动加上Sdept='IS'的条件插入操作:DBMS自动检查Sdept属性值是否为'IS'如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为'IS'建立视图(续)[例7]将学生的学号及他的平均成绩定义为一个视图,假设SC表中“成绩”列Grade为数字型CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)F
5、ROMSCGROUPBYSno建立视图(回顾)行列子集视图WITHCHECKOPTION的视图基于多个基表的视图基于视图的视图带表达式的视图分组视图注:视图是虚表,是导出的表以SELECT*方式创建的视图可扩充性差,应尽可能避免视图的修改与删除ALTERVIEW<视图名>(<列名>…)AS<查询>[WITHCHECKOPTION]DROPVIEW<视图名>视图的查询从用户角度:查询视图与查询基本表相同DBMS实现视图查询的方法:实体化视图(ViewMaterialization)有效性检查:检查所查询的视图是否存在执行视图定义,将视图临时实体化,生成临时表查询视图转换为查询
6、临时表查询完毕删除被实体化的视图(临时表)视图的查询视图消解法(ViewResolution)进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询执行修正后的查询查询视图(续)[例]在信息系学生的视图中找出年龄小于20岁的学生。SELECTSno,SageFROMIS_StudentWHERESage<20;IS_Student视图的定义(视图定义例1):CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESde
7、pt='IS‘;视图的查询(续)视图实体化法视图消解法转换后的查询语句为:SELECTSno,SageFROMStudentWHERESdept='IS'ANDSage<20;查询视图(续)视图消解法的局限有些情况下,视图消解法不能生成正确查询。采用视图消解法的DBMS会限制这类查询。查询视图(续)[例3]在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩SELECT*FROMS_GWHEREGavg>=90;S_G视图定义:CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Gr
此文档下载收益归作者所有