数据库 视图
定义:
视图是虚表,是从一个或者几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图的数据。视图是一种逻辑对象,并不是物理对象,因此视图并不占物理存储空间。
内容:
基表的列的子集或行的子集
两个或者多个基表的联合,
两个或者多个基表的链接
基表的统计汇总
另外一个视图的子集
视图和基表的混合
优点:
几种用户使用的数据
掩盖数据库的复杂性,将数据库的负载型与用户屏蔽
简化数据库的权限管理
为向其他应用程序输出而重新组织数据
语法:
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
- 点赞
- 收藏
- 关注作者
评论(0)