关于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 更新操作根据更新的字段的位置而显示不同的值.

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

最新文章

  1. 后缀数组 & 题目
  2. Spring day03笔记
  3. js中RegExp类型
  4. atitit.RESTful服务的概览and框架选型
  5. IOS开发 应用程序图标数字角标
  6. hdu 4002 Find the maximum
  7. JEECMS-自定义标签[list]
  8. 基于jQuery带标题的图片3D切换焦点图
  9. chrome调试技巧
  10. 基于promise对小程序http请求方法封装
  11. iOS---------- Safe Area Layout Guide before iOS 9.0
  12. AtCoder Regular Contest 102 E Stop. Otherwise...
  13. php+smarty轻松开发微社区/微论坛
  14. C/C++ 各种进制的表示方法/ 进制前缀
  15. 3、利用GDB进行程序调试
  16. odoo开发环境搭建(三):安装odoo依赖的python包
  17. 51nod 1289 大鱼吃小鱼
  18. 提高Android Studio的Build速度实践
  19. Influxdb时序数据库阅读笔记
  20. iOS UI-popoverController

热门文章

  1. 推荐一个比HtmlWebpackPlugin更灵活的插件
  2. Java中的集合框架(上)
  3. python os 模块
  4. React Router 使用教程
  5. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】
  6. HDU 1003 Max Sum【动态规划求最大子序列和详解 】
  7. find the nth digit(二分查找)
  8. net+Oracle开发过程中遇到的小问题
  9. c++(单词统计)
  10. DB 注意事项 优化数据库查询