首页 > 其他分享 >视图与物化视图

视图与物化视图

时间:2022-10-10 18:12:47浏览次数:60  
标签:FORCE 创建 视图 物化 刷新 基表

一、视图

创建视图语法结构:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
    [(alias[, alias]...)]
 
AS subquery
     [WITH CHECK OPTION [CONSTRAINT constraint]]
     [WITH READ ONLY]

语法解析:

  • OR REPLACE    :若所创建的试图已经存在,则替换旧视图;
  • FORCE:不管基表是否存在ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用);
  • NOFORCE  :如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。
  • alias:为视图产生的列定义的别名;
  • subquery  :一条完整的SELECT语句,可以在该语句中定义别名;
  • WITH CHECK OPTION  :插入或修改的数据行必须满足视图定义的约束;
  • WITH READ ONLY  :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

例如:

create view v_emp as select * from emp where deptno = 30;

删除视图

DROP VIEW v_emp

二、物化视图

创建物化视图语法结构:

CREATE METERIALIZED VIEW view_name
[BUILD IMMEDIATE | BUILD DEFERRED ]①
REFRESH [FAST|COMPLETE|FORCE]② 
[ON [COMMIT |DEMAND ] | START WITH (start_time) NEXT(next_time)]③
AS subquery

语法解析:

① 二选一,默认是 BUILD IMMEDIATE。

  • BUILD IMMEDIATE 创建物化视图的时候就生成数据;
  • BUILD DEFERRED 创建时不生成数据,以后根据需要再生成。理解为创建一个空的视图。

② REFRESH:当基表发生 DML 操作后,物化视图何时采用哪种方式和基表同步数据。

REFRESH 后面跟着的刷新方法有:FAST、COMPLETE、FORCE。

  • FAST:增量刷新,只刷新自上次刷新以后进行的修改。
  • COMPLETE:对整个物化视图进行完全的刷新,相当于先 truncate 再 insert。
  • FORCE:默认的刷新方式。刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。

③ 刷新的模式有两种:

  • ON DEMAND 需要手动刷新物化视图。默认为 ON DEMAND
  • ON COMMIT 在基表发生 COMMIT 操作时刷新。

例如:

create materialized view my_materialized
refresh complete 
on demand start with sysdate next
to_date(concat(to_char(sysdate + 1,'dd-mm-yyyy'),'00:03:00'),'dd-mm-yyyy hh24:mi:ss')  
as select * from  user_info;  

这个物化视图表示从当前日期开始,往后每天 00:03 进行全量覆盖刷新。

删除物化视图

drop materialized view mv_name

标签:FORCE,创建,视图,物化,刷新,基表
From: https://www.cnblogs.com/godzzz/p/16776367.html

相关文章

  • 详解数仓的锁相关参数及视图
    摘要:GaussDB(DWS)中锁等待可以设置等待超时相关参数,一旦等锁的时间超过参数配置值会抛错。本文分享自华为云社区《​​GaussDB(DWS)锁相关参数及视图详解​​》,作者:yd_22......
  • MatrixOne从入门到实战06——视图实践
    MatrixOne从入门到实战——视图实践MatrixOne也支持视图功能,且其与MySQL中的视图概念及语法非常类似。MatrixOne的视图也是一种虚拟存在的表,其行和列的数据来自定义视图......
  • 多视图几何三维重建实战系列之MVSNet
    1.概述MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术,传统方法利用几何、光学一致性构造匹配代价,进行匹配代价累积,再估计深度值。虽然传统方法有较高的......
  • db2 表、视图、索引
    一、表1、概述所有数据都存储在数据库的表中,表由不同数据类型的一列或多列做成数据存储在行(或称为记录)中表使用createteble语句定义的2、创建表createtableemployee(idI......
  • 视图层接收 和 设置cookie
    视图层接收和设置cookiefromdjango.httpimportHttpResponsefromdjango.views.decorators.csrfimportcsrf_exemptimportjson#Createyourviewshere.#ur......
  • Mastercam如何将三维实体输出为三视图?
    A:步骤1:点选下拉式功能的选项卡→实体。请点选实体物件(如:如你的CAD为曲面的属性,请使用由曲面产生实体的功能转为实体。)步骤2:从实体工具列中,点选三视图的选项图标。步骤......
  • MySQL---视图
    视图常见的数据库对象概述为什么要使用视图?视图的理解 ......
  • SQL视图中的字段与基表中的字段不一致,原因是什么?
        出现这样的原因是修改了表的结构,没有重新编译视图,这种情况出现的几率很少,并不是没有。解决方法:重新编译一下该视图。视图是一个虚表,是从一个或几个基本表(或视......
  • drf05-2个视图基类-5个扩展类-9个视图子类-视图集
    1.2两个视图基类#之前写了五个接口,继承APIView#还可以继承GenericApiView:它帮了我们干很多事#GeneriaAPIView.属性和方法-属性 -queryset#要序列化的数据 -seri......
  • drf视图基类,视图扩展类和视图子类
    两个视图基类GenericAPIView属性: queryset#要序列化的数据 serializer_class#序列化类#了解lookup_field#通过get_object......