• 关于oracle视图小结


    关于oracle的视图小记:
    一.
    视图:就是对SQL语句的封装,使用起来更方便.不易出错

    优点:
      1.简化数据操作:视图可以简化用户处理数据的方式
      2.着重于特定数据:不必要的数据或敏感的数据可以
        不出现在视图中(完成数据的筛选显示)
      3.安全性高:视图提供了一个简单而有有效的安全机制,可以定制不同用户
        对数据的访问权限
      4.向后兼容性:视图使用户在表的架构更改时为表创建向后兼容接口
    二视图分两种:
      注意:
        1.在创建与使用带检查约束是的视图时,
          with check option与with read only 不能共存
        2.with check option 作用范围包括(单个值,枚举,范围)
        3.with check option与with read only区别:
          with check option :只约束当前视图的条件字段不能被改变
          with read only :约束的所有字段都不能被改变
      第一种:简单的非物化的视图:
        就是纯粹的对SQL语句进行封装
      创建与修改视图的语法:
          create [or replace] [force] view view_name as SQL语句
          [with check option]
          [with read only]
        注;[]内是可选项
        1.or replace: 有就同名的视图,就替换(把原先的删除在新建一个),没有就直接新建一个视图
        2.force: 不管基表是否存在ORACLE都会自动创建该视图(为视图提供了向后兼容
          的接口,可以在没有某表时也能成功创建视图)
        3.subquery: 一条完整的select 语句,可以在该语句中定义别名
        4.with check option: 插入或修改的数据必须满足视图定义的约束
        5.with read only: 该视图上不能进行任何DML操作
        注:
          1>.4.5不能共存
          2>.:其实视图的修改就是将原来的视图删除再重新建一个名字一样的
            新视图
        删除视图:
          drop view 视图名;
      第二种:物化视图
        在内存中有存储空间,当效率要比去查表要快,相当于在内存中新建了一
        个表,是牺牲了内存去换取效率

        创建物化视图的语法:
          create meterialized view 视图名字
          [build immediate | build deferred]
          refresh [fast|complete|force]
          [
            on [commit | demand] |start with (start_time) next (next_time)
          ]
          sql语句

        1.build immediate:是在创建视图的时候就生成数据
        2.build deferred:则在创建时不生成数据,以后根据需要在 生成数据
          1.2默认是1
        3.refresh
          1.fast:刷新采用增量刷新,只刷新上次以后进行的修改
          2.complete:对整个视图进行完全的刷新
          3.force:oracle会自动判断是用fast还是complete
          1.2.3默认3
        4.on [commit | demand]:刷新模式:
          demand:只需要手动刷新物化视图(默认)
          commit :在基表发生改变时自动刷新
          start with (start_time) next (next_time):
            start_time:开始刷新的时间
            next_time:每次刷新时间的间隔
        删除物化视图:
          drop meterialized view 物化视图名字
      物化视图的分类:
        1.创建时生成数据
        2.创建时不生成数据
        3.自动刷新数据
        4.手动刷新数据
        5.增量刷新
        注意:创建增量刷新视图前:要先为视图中用到的表创建物化视图日志
        例:
        --创建增量刷新的物化视图
        --首先要创建物化视图日志
          create materialized view log on dept with rowid
          create materialized view log on emp with rowid
        --创建物化视图
          create materialized view view_name
          refresh
          on commit
          as
          select e.* from emp e,dept d where d.deptno=e.deptno

        物化视图日志中的字段含义:
          snaptime$$:用于表示刷新时间
          dmltype$$:用于表示DML操作类型,
               I表示insert ,D表示delete
               U表示update
          old_new$$:用于表示这个值是新值还是旧值
                N(ew)表示新值,O(ld)表示旧值
                U表示update操作
          change_vector$$:表示修改矢量,用来表示被修改的是哪个或哪几个字段,此列是raw类型

                  其实oracle采用的方式就是用每个bit位去映射一个列插入操作显示为:fe,

                  删除显示为:oo 更新操作根据更新的字段的位置而显示不同的值.

                  当我们手动刷新物化视图后,物化视图日志被清空,物化图更新





  • 相关阅读:
    CentOS7与CentOS8一些区别
    windows下bat脚本记录
    windows server AD增加自定义属性
    vsphere6.7为虚拟机添加硬盘报“目标数据存储 不在存储容器中。”错误
    linux 常用的命令
    CentOS7开机无法启动,报 Failed to load SELinux policy. Freezing错误
    SpringCloudAlibaba笔记06
    SpringCloudAlibaba笔记05
    接触CrackMe 第一个
    HOOK钩子
  • 原文地址:https://www.cnblogs.com/lkyang/p/8401823.html
Copyright © 2020-2023  润新知