视图

1.什么是视图

视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合,不会存储数据。

      视图包含简单视图和复杂视图,两者区别如下:
1.简单视图只从单表里获取数据,复杂视图从多表获取数据;
2.简单视图不包含函数和数据组,复杂视图包含;
3.简单视图可以实现DML操作,复杂视图不可以

 

2.视图的优点

1)对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2)用户通过简单的查询可以从复杂查询中得到结果。
3)维护数据的独立性,试图可从多个表检索数据。
4)对于相同的数据可产生不同的视图

3.创建视图

CREATE [ORREPLACE] [FORCE|NOFORCE] VIEW view_name  

 

[(列名1,列名2…)]  

 

AS

视图查询语句 

 

[WITHCHECK OPTION [CONSTRAINT constraint]] 

[WITH READONLY]

 

FORCE  :不管基表是否存在ORACLE都会自动创建该视图;

NOFORCE   :只有基表都存在ORACLE才会创建该视图:

列名1,列名2 :视图产生的列名;

WITHCHECK  OPTION :插入或修改的数据行必须满足视图定义的约束,指定对视图执行的dml操作必须满足“视图子查询”的条件,即可对通过视图进行的增删改操作进行"检查",要求增删改操作的数据, 必须是select查询所能查询到的数据,否则不允许操作并返回错误提示. 默认情况下, 在增删改之前"并不会检查"这些行是否能被select查询检索到;

WITH READONLY :创建的视图只能用于查询数据, 而不能用于更改数据。

 

视图的定义原则:
1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;
2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用 ORDER BY 子句;
3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;

 

4.视图操作

查看视图数据:select * from view_name

删除视图:drop view view_name

查询视图:SELECT view_name,text from user_views;

 

5.物化视图

物化视图,存储实际数据, 因此会占用一定的数据库空间,物化视图中 的数据是可以重用的, 因此经常应用与 读取频繁的场合。比如统计一个拥有 百万级记录的数据表的 和  以及 均值 题, 将耗费大量的数据库资源和时间 ,可以通过物化视图对表进行一次统计, 并将统计结果存储在物化视图中,以后的每次查询直接查询该视图即可。

6.创建物化视图

CREATE MATERIALIZED VIEW VIEW_NAME   
BUILD [IMMEDIATE| DEFERRED]  
REFRESH [FAST| COMPLETE |FORCE| NEVER]   
ON [COMMIT |DEMAND]  
[start with sysdate next sysdate+1;]
[for update]
AS 
查询语句 ; 

BUILD IMMEDIATE:用于立即加载 化视图的数据

BUILD DEFERRED:表示延迟载入数据

REFRESH FAST:增量刷新,只刷新自上次刷新以后进行的修改。采用这种方式刷新时,需要创建物化视图日志,增量刷新有一些约束条件,需要满足;

REFRESH COMPLETE:全量刷新

REFRESH FORCE:选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式

REFRESH NEVER:指物化视图不进行任何刷新

ON COMMIT:要求 Oracle实现自动更新功能, 即基础表的数据更新被提交后, 应该自动更新物化视图的数据;

ON DEMAND仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图

start with…指定视图刷新时间,配置该参数后,会自动创建job

for update:设置该选项,物化视图可以进行增删操作;

7.物化视图操作

1)物化视图刷新:

手工刷新:DBMS_MVIEW.REFRESH(视图名称,'f');

自动刷新:物化视图可以采用job进行定时刷新

2)删除物化视图:

DROP MATERIALIZED VIEW

3)创建物化视图日志:

create materialized view log on test1 [withprimary key|with rowid]

4)删除物化视图日志

drop materialized view log on test1

5)物化视图可以创建索引;

6)查看物化视图日志select * from MLOG$_ test1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值