下面是由希赛小编整理的中级通信互联网技术知识点精讲之视图,希望能帮助学友们。具体内容如下:
视图
视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。
视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。因此,基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
视图一经定义,就可以和基本表一样被查询、被删除,也可以在一个视图之上再定义新的视图,但对视图的更新(如增加、删除、修改)操作则有一定的限制。
1.定义视图
(1)建立视图
SQL用CREATEVIEW命令建立视图,其一般格式为:
CREATEVIEW<视图名>[(〈列名>[,〈列名>]…)]AS〈子査询〉
[WITHCHECKOPTION];
其中,子査询可以是任意复杂的SELECT语句,但通常不允许含有ORDERBY子句和DISTINCT短语。WITHCHECKOPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子査询中的条件表达式)。
组成视图的属性列名或者全部省略,或者全部指定,没有第3种选择。如果省略了视图的各个属性列名,则隐含该视图由子査询中SELECT子句目标列中的诸字段组成。
(2)删除视图
该语句的格式为:
DROPVIEW〈视田名〉;
视图删除后,视图的定义将从数据字典中删除。但是由该视图导出的其他视图定义仍在数据字典中,不过该视图己失效。用户使用时会出错,要用DROPVIEW语句将它们一一删除。
就像基本表删除后,由该基本表导出的所有视图(定义)没有被删除,但均己无法使用了。删除这些视图(定义)需要显式地使用DROPVIEW语句。
2.査询视图
视图定义后,用户就可以像对基本表一样对视图进行査询了。
DBMS执行对视图的査询时,首先进行有效性检查,检查查询的表、视图等是否存在,如果存在,则从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的査询:然后执行修正了的查询。这一转换过程称为视图消解(ViewResolution)。
3.更新视图
更新视图是指通过视阁来插入(INSERT)、删除(DELETE)和修改(UPDATE)数据。由于视图是不实际存储数据的虚表,因此对视图的更新,设终要转换为对基本表的更新。
为防止用户通过视图对数据进行增加、删除、修改时,对不属于视图范围内的基本表数据进行操作,可在定义视图时加上WITHCHECKOPTION子句。这样在视图上增删改数据时,DBMS会检查视图定义中的条件,若不满足条件,则拒绝执行该操作。
一般地,行列子集视图是可更新的。除行列子集视图外,还有些视图理论上是可更新的,但它们的确切特征还是尚待研究的课题。还有些视图从理论上是不可更新的。
目前各个关系数据库系统一般都只允许对行列子集视图进行更新,而且各个系统对视图的更新还有更进一步的规定,由于各系统实现方法上的差异,这些规定也不尽相同。
相关推荐: