第八章:视图
 
8.1.视图概念:虚表;不存储数据,数据字典只记录视图定义,视图通过select定义。】
                            操作视图还是操作的基表,所以慎重操作。
8.2.视图的优点:
8.3.创建视图:--首先要有创建权限哦grant create view to scott;
         8.3.1.
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
其中:
OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图;
FORCE:不管基表是否存在ORACLE都会自动创建该视图;
NOFORCE:只有基表都存在ORACLE才会创建该视图:
alias:为视图产生的列定义的别名;
subquery:一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION:插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY:该视图上不能进行任何DML操作。
         8.3.2.查询数据字典中记录的视图的定义;
         Select viem_name,text
         From user_views;
8.4.使用视图:
         8.4.1.WITH READ ONLY;
         8.4.2.WITH CHECK OPTION;
8.5.修改视图:只有重新定义;
8.6.管理视图:
         读取数据字典,获得该视图的定义,查找到盖视图所引用的表;
         从数据字典中查询当前用户对于盖视图所引用的表的权限;
         执行定义该视图的SQL语句,实现执行视图查询。
注意:如果复杂视图包含分组函数、group by子句或者distinct关键字,就不能使用DML操作;包含表达式或者伪列ROWNUM也不能进行DML操作。
8.7.删除视图:drop view view name;
8.8. 物化视图:
概念:目的是为了减少诸如普通视图中由于JOIN和ORDER BY子句带来的查询好事问题,
以减少系统资源的压力,一般用在数据仓库,分布式环境,移动计算。
         物化视图;
         查询重写;涉及参数—query_rewrite_enabled;
8.9.物化视图的同步;
         On commit;自动同步
         On demand;手动,需要执行DBMS_MVIEW.REFRESH过程;
8.10.物化视图创建;
         创建物化视图的前提条件:
                   Conn / as sysdba
                   Grant create materialized view to scott;
                   Grant query rewrite to scott;
                   Grant create any table to scott;
                   Grant select any table to scott;
创建物化视图日志:
         Create materialized view log on dept;
         Create materialized view log on emp;
创建物化视图:
         Create materialized view mtrlview_test
         Build immediate //立即创建,相对的为build buffered
         Refresh fast on commit
         Enable query rewrite
         As
         Select d.name,d.loc,e.ename,e.job,e.mgr,e.hiredate,e.sal
         From dept d,emp e
         Where d.deptno=e.deptno
 
         删除物化视图:drop materialized view mttrlview_test;