数据库 视图

陈磊

定义:

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

内容:

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

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

两个或者多个基表的链接

基表的统计汇总

另外一个视图的子集

视图和基表的混合

优点:

几种用户使用的数据

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

简化数据库的权限管理

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

语法:

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