欢迎来到天天文库
浏览记录
ID:35342790
大小:57.81 KB
页数:4页
时间:2019-03-23
《数据库原理与运用之视图管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第九章视图管理视图是一种数据库对象,对于查询来说,视图和数据表有相同的引用方法。但视图本事并不保存数据,它在本质上是相关查询命令的集合。9.1视图的概念视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据集形式存在,•行和列数据来源于引用的表,并且在引用视图时动态生成。所以,视图也可以看成是一张或多张数据表组成的一个数据窗口。❖虚表,是从一个或几个基本表(或视图)导出的表❖只存放视图的定义,不存放视图对应的数据•基表中的数据发生变化,从视图中查询出的数据也随之改变9.1.1视图的优缺点1.视点集
2、中数据表的创建是出于对系统的设计与实现考虑的,并不是面向用户。用户只关心他感兴趣的某些特定数据和他所负责的特定任务。视图为用户提供了一张或多张表中的他们感兴趣的数据。2.简化数据的操作视图大大简化了用户对数据的操作。因为在定义视图吋,若视图本身就是一个复杂查询的结果集,这样在每次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。3•自定义数据视图能够实现让不同的用户以不同的方式看到不同的数据集。4•合并分割数据在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。如果使
3、用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。5・安全性通过视图用户只能查看和修改他们所能看到的数据。其它数据库或表即不可见也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。视图缺点:1.相对低效视图在本质上是一些命令的集合。在对视图进行操作的时候,除了执行键入的sql语句中的查询更新外,还需要执行视图本身所包含的命令。因此,这在一定程度上降低了查询效率。1.有限的更新操作可以更新的视图要求其是单表,并只用于定义视图的SELECT语句不能包含GROU
4、PBU或HAVING子句。另外,如果SELECT语句中包含了聚集函数、计算列或DISTINCT子句,相应的视图也不能更新。9.1.2视图的分类1•标准视图标准视图组合了一个或多个表中的数据。2•索引视图索引视图是被具体化了的视图,即它已经过计算并存储。3•分区视图分区视图是在一台或多台服务器间水平连接一组成员表中的分区数据。9.2创建视图CreateView♦语句格式CREATEVIEW<视图名〉[(<列名〉[,<列名>]-)]AS<子查询〉[WITHCHECKOPTION];•组成视图的属性列名:全部省略或全部指定♦子查询不允许含有ORDERBY子句和DISTIN
5、CT短语•RDBMS执行CREATEVIEW语句时只是把视图定义存入数据字典,并不执行其屮的SELECT语句。•在对视图查询吋,按视图的定义从基本表中将数据查出。9.2.1创建简单视图CREATEVIEWMYVIEW1ASSELECT*FROMSTUDENT;部分数据视图CREATEVIEWMYVIEW1ASSELECTS_NO,S_NAME,S_DEPTFROMSTUDENTWHERES_AVGRADE>=60;创建与基本表不同字段名的视图CREATEVIEWMYVIEW2(学号,姓名,专业,平均成绩,系)ASSELECTS_NO,S_NAME,S_MAJOR,S
6、_AVGRADEZS_DEPTFROMSTUDENTWHERES_AVGRADE>=60;9.2.2创建加密视图加密是对定义视图的代码文本加密。:L.使用WITHENCRYPTION选项对视图定义代码加密CREATEVIEWMYVIEW2WITHENCRYPTIONASSELECTA.S_NO,S_NAMEFROMSTUDENTASAINNERJOINSCASBONA.S_NO=B.S_NO;9.2.3创建绑定架构的视图CREATEVIEWMYVIEW2WITHSCHEMABINGDINGASSELECTA・S_NO,S_NAMEFROMdbo.studentASA
7、INNERJOINdbo・SCASBON(A.S_NO=B.S_NO);9.2.4创建带条件的视图针对视图执行的所有更新语句只有符合SELECT_STATEMENT中设置的条件,才能成功。CREATEVIEWMYVIEW2ASSELECTS_NO,S_NAMEFROMSTUDENTWHERES_AVGRADE>=60WITHCHECKOPTION;9.2.4创建带函数的视图CREATEVIEWMYVIEW2ASSELECTS_NO,AVG(S_GRADE)AS平均成绩FROMSTUDENTGROUPBYS_NO;9.3视图数据的更新1)任何修改只能影响到一个基表
此文档下载收益归作者所有