【十三】视图
13.1 为什么使用视图
1)限制数据的存取:
让用户只能看到基表的部分信息。
方法:赋予用户访问视图对象的权限,而不是表的对象权限。
2)使得复杂的查询的书写变得容易:
隐藏或简化书写多表连接等复杂语句(将一网打尽部分做成视图)。
3)提供数据的独立性:
基表的多个独立子集的映射。
13.2 简单视图和复杂视图
1) 简单视图:
视图与基表的记录一对一,故而可以通过视图修改基表。
2) 复杂视图:
视图与基表的记录一对多,无法修改视图。
视图
13.2 语法
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY];
13.2.1 FORCE作用:
可以先建视图,后建基表:
SQL>create force view view1 as select * from test1;
13.2.2 WITH CHECK OPTION作用:
对视图where子句进行约束,使视图结果集保持稳定。
SQL>create view view2 as select * from emp where deptno=10 with check option;
insert 不许插入非10号部门的记录
update 不许将10号部门修改为其他部门
13.2.3 WITH READ ONLY作用:
禁止对视图执行DML操作
SQL>create view view3 as select * from emp where deptno=10 with read only;
如果建立了视图 想查看其中的定义,可以访问如下视图dba_views中的text字段(long型);
declare
v_text dba_views.text%type;
v_name dba_views.view_name%type;
begin
select text, view_name into v_text,v_name FROM dba_views WHERE view_name='V1';
dbms_output.put_line(v_name||' define is :'||v_text);
end;
the end !!!
@jackman 共筑美好!