视图-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

视图

简介: 一、概述 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的。视图只有逻辑定义。每次使用的时候,只是重新执行SQL。优点 1、可以限制用户只能通过视图检索数据。

一、概述

视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的。视图只有逻辑定义。每次使用的时候,只是重新执行SQL。

优点

1、可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。

2、可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。

3、限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。

4、从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。

一、创建 & 修改

1、需要权限:

  a) 用户必须具有create view系统权限;

  b) 要在其他方案中创建视图,用户必须具有create any view系统权限

2、语法:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
  [(alias[, alias]...)]
 AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

3、参数说明

  a) OR REPLACE:如果视图已经存在,则替换旧视图。

  b) FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。

  c) NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。

  d) WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

二、删除

DROP VIEW <view_name>;

三、可更新视图

1、了解更新原理

  第一步:将针对视图的SQL语句与视图的定义语句(保存在数据字典中)“合并”成一条SQL语句

  第二步:在内存结构的共享SQL区中“解析”(并优化)合并后的SQL语

  第三步:“执行”SQL语句

2、查询视图“可更新”(包括“增删改”)的列

  a) dba_updatable_columns——显示数据库所有视图中的所有列的可更新状态

  b) all_updatable_columns——显示用户可访问的视图中的所有列的可更新状态

  c) user_updatable_columns——显示用户拥有的视图中的所有列的可更新状态

四、查询视图信息

使用数据字典视图

1、dba_views——DBA视图描述数据库中的所有视图
2、all_views——ALL视图描述用户“可访问的”视图
3、user_views——USER视图描述“用户拥有的”视图 
4、dba_tab_columns——DBA视图描述数据库中的所有视图的列(或表的列)
5、all_tab_columns——ALL视图描述用户“可访问的”视图的列(或表的列)
6、user_tab_columns——USER视图描述“用户拥有的”视图的列(或表的列) 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章