oracle进阶

本文详细介绍了数据库中的视图、物化视图、序列以及同义词的概念、作用和基本语法。视图是虚拟表,用于简化数据操作并提供安全性和向后兼容性。物化视图则是存储了查询结果的物理副本,用于加速查询。序列则生成唯一数字,而同义词则是对象的别名,方便用户操作。
摘要由CSDN通过智能技术生成

第一章  视图

1.什么是视图?

  • 视图是一个虚拟表
  • 视图是由sql查询语句产生的
  • 视图真实存在 但是不存储数据
  • 视图中的数据 只是对 基表(源数据表) 中的数据的引用

2.视图的作用

  • 简化数据操作
  • 对特定数据提供一定的安全性
  • 提供向后兼容性

3.视图的基本语法

   创建视图:  

    create [or replace] [force] view view_name
    as 
    subquery
    [with check option ]
    [with read only]

    删除视图:   drop view 视图名

  •  or replace  替换已存在的视图
  • force    强制创建视图(可以给不存在的数据表创建视图)
  • with check option  不能修改视图形成字段的数据
  • with read only

注意:

  • 简单视图(数据来源只有一个表 没有聚合操作) 中的任意数据都可以进行任意操作

  • with check option 只要不影响我们的非视图数据就可以操作

第二章:物化视图

1.什么是物化视图

物化视图与普通的视图相比的区别是物化视图是建立的副本,它类似于一张表,需要占用存储空间,它是真实存在的,用来提高查询速度,

2.为什么要物化视图

  • 加快查询速度

  • 数据量变大 视图查询速度比较慢

  • 物化视图 查询速度比较快

  • 计算前置

3.语法

        create materialized view view_name
        [build immediate  |  build deferred ]
        refresh [fast|complete|force]
        [
        on  [commit  |  demand ]  |  start  with  (start_time)  next
        (next_time)
        ]
        as
        subquery

  • materialized view   物化视图
  • build  immediate(默认) 创建视图后立刻生成数据
  •           deferred     创建视图后 等待刷新生成数据
  • refresh: 数据刷新方式
  •          fast:增量更新
  •          comlpete: 全量更新 
  •          force (默认):先尝试fast,再使用complete
  • on  :更新时机
  •        commit :基表只要commit就会更新
  •        demand(默认):手动方式   
        begin
            DBMS_MVIEW.REFRESH('view_test_11');
        end;

4.物化视图的增量更新

        物化视图通过日志来更新,当物化视图增量更新完毕后日志中的数据就会删除

增量更新语法

  • 增量更新的物化视图

    • 创建基表的物化视图日志

    • 产生物化视图的 sql 必须包含rowid

创建日志


create materialized view log on T_ADDRESS with rowid;
物化视图的sql必须包含rowid
select
       T_ADDRESS.ROWID as addr_rowid,
       T_AREA.ROWID as area_rowid,
       T_ADDRESS.ID, T_ADDRESS.NAME, T_AREA.NAME area
from T_ADDRESS
inner join T_AREA on T_ADDRESS.AREAID = T_AREA.ID;

第三章-序列

什么是序列

  • 一个可以产生 唯一数字

    • 设置起始位置

    • 设置增长数量

    • 最大值

    • 最小值

    • 循环

  • 语法

    • CREATE SEQUENCE sequence  //创建序列名称
      ​
      [INCREMENT BY n]  //递增的序列值是 n 如果 n 是正数就递增,如果是负数就递减 默认是 1
      ​
      [START WITH n]     //开始的值,递增默认是 minvalue 递减是 maxvalue
      ​
      [{MAXVALUE n | NOMAXVALUE}] //最大值
      [{MINVALUE n | NOMINVALUE}] //最小值
      ​
      [{CYCLE | NOCYCLE}] //CYCLE和NOCYCLE 表示当序列的值达到限制值后是否循环。CYCLE代表循环即到达例如最大值后重新从最小值开始
      ​
      [{CACHE n | NOCACHE}];//定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。
  • 注意点

    • 起始值是不能小于最小值的

    • 如果没有循环 能取到值 是不能超过最大值的

    • 如果有循环 起始从最小值开始

    • cache默认是为20的 循环值是要大于这个值的

第四章-同义词

  • 对象的别名

    • 对象 : 表 序列 视图

  • 作用

    • 私有

      • 只能是创建这个同义词的用户使用

    • 共有

      • 所有的用户都可以使用

    • 给对象起别名 设置为公共的

      • 所有人都可以用这个同义词 所有人都不知道原始表名 表的用户

  • 语法

    • create [public] SYNONYM synooym for object;
    • 不加public就是私有的

    • 加public就是共有的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值