数据库 视图

举报
Tracy 发表于 2019/09/02 12:09:04 2019/09/02
【摘要】 定义:视图是虚表,是从一个或者几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图的数据。视图是一种逻辑对象,并不是物理对象,因此视图并不占物理存储空间。内容:基表的列的子集或行的子集两个或者多个基表的联合,两个或者多个基表的链接基表的统计汇总另外一个视图的子集视图和基表的混合优点:几种用户使用的数据掩盖数据库的复杂性,将数据库的负载型与用户屏蔽简化数据库的权限管...

定义:

视图是虚表,是从一个或者几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图的数据。视图是一种逻辑对象,并不是物理对象,因此视图并不占物理存储空间。

内容:

基表的列的子集或行的子集

两个或者多个基表的联合,

两个或者多个基表的链接

基表的统计汇总

另外一个视图的子集

视图和基表的混合

优点:

几种用户使用的数据

掩盖数据库的复杂性,将数据库的负载型与用户屏蔽

简化数据库的权限管理

为向其他应用程序输出而重新组织数据

语法:

1、创建视图

CREATE VIEW <视图名>[(列名1,列名2......)][WITH ENCRYPTION]

AS

SELECT_STATEMENT [WITH CHECK OPTION]

2、修改视图

ALTER VIEW  <视图名>[(列名1,列名2......)][WITH ENCRYPTION]

AS

SELECT_STATEMENT [WITH CHECK OPTION]

3、删除视图

DROP VIEW <视图名>

WITH CHECK OPTION详解:

该项是强制执行符合所设置的条件。

1、对于UPDATE 在有WITH CHECK OPTION的视图中,要保证数据UPDATE后数据仍旧可以被视图查询出来

2、对于DELETE有无WITH CHECK OPTION都一样

3、对于Insert,有WITH CHECK OPTION的视图,要保证Insert后,数据要被视图查询出来,例如:

create view testview 

as 

select empno,ename from emp where ename like ‘M%’ with check option; 

查询视图结果:

select * from testview 

EMPNO  ENAME 

———- ———C 

7654 MARTIN 

7934 MILLER 

更新视图:

update testview set ename = ‘Mike’ where empno = 7654;

OK,这条更新语句可以执行

更新视图:

update testview set ename = ‘Robin’ where empno = ‘7654′; 

ORA-01402: 视图 WITH CHECK OPTIDN 违反 where  句的错误,原因,违反了视图的where

本文转载自异步社区。

文链接:

https://bbs.huaweicloud.com/blogs/22ec6804cd3711e9b759fa163e330718

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。