1、视图概念
视图是一张虚拟表,由存储的表的查询构成,可以将其输出看作一个表。如真表一样。视图并不在数据库中存储数据值,其数据值来自定义视图的查询语句所引用的表,数据库只在数据字典中存储视图的定义的信息。
通过视图修改数据时,实际上就是在修改基本表中的数据。同时,改变基本表中的数据也会反映到由该表组成的视图中。双向影响。
2、创建视图
在当前用户模式中创建视图,要求数据库用户必须具有create view系统权限。如要在其他用户模式中创建视图,用户必须具有create any view系统权限。
创建视图语句如下:
create view view_name as
<subquery> //用于指定视图对应的子查询语句
with check point //该子句用于指定在视图上定义的CHECK约束(针对可更新的视图,即更新的值是否需要检查)
with read only; //该子句用于定义只读视图
创建视图举例:
查询视图举例:
3、更新视图
更新视图需要满足以下条件:
i、没有使用连接函数、聚合函数和组合函数
ii、创建视图的select语句中没有聚合函数且没有group by、connect by、start with子句及distinct关键字
iii、创建视图的select语句不包括从基表列通过计算所得的列
vi、创建视图没有包含只读属性
可更新视图举例:(insert into和update)
以下值得注意:
在创建视图时,只是将视图的定义信息存入数据字典,并不会执行其中的select语句。只在对视图进行查询时系统才会根据视图的定义从基本表中获取数据。
此外,修改视图中的数据就是修改基本表中的信息。
4、删除视图
举例(删除其他用户模式的视图需要权限):
执行drop view语句后,视图的定义将被删除,但这对视图内所有的数据没有任何影响,它们仍然存储在基本表中。