zoukankan      html  css  js  c++  java
  • oracle之简单总结

    视图:

      作用:是数据库对象,是一个或多个表的或视图中导出的虚表,视图对应的数据并不是存储在视图中,而是存储在数据库中的数据表中。

        视图的结构和数据是对数据表进行查询的结果。

      优点:

        1.简化数据操作。

        2.着重于特定数据

        3.视图提供了一个简单的安全机制,可以定制没个用户的访问权限。

        4.提供向后兼容性。(我们访问的视图名不变,视图里面的表名改变、我们只需要用以前的视图名去重新创建视图,这样就会把之前的覆盖掉,这样客户端就不需要改变)

      视图的创建:

    CREATE [OR REPLACE] [FORCE] VIEW view_name
    AS subquery
    [WITH CHECK OPTION ]
    [WITH READ ONLY]
    or replace :若所创建的视图已经存在,oracke自动重建该视图。
    force :不管基表是否存在oracle都会自动创建该视图。
    subquery :一条完整的select语句,可以在该语句满足视图定义的约束。
    with check option :插入或修改的数据行必须满足视图定义的约束。
    with read only :该视图上不能进行任何dml操作(对数据操作)

        

       

      创建普通视图  

    create view view_table1
    as
    select * from 
    (select rownum r,t.* from t_area t) c
    where c.r>3
    

      创建带条件的视图

        or replace   表示替换以前的视图同名的

    create or replace view view_table1
    as
    select * from 
    (select rownum r,t.* from t_area t) c
    where c.r>3
    

      force 表示sql 语句不是正确的也可以添加视图 

        存在的意义:如果后期添加了t_are表这个视图就可以使用了

    create or replace force view view_table1
    as
    select * from 
    (select rownum r,t.* from t_are t) c
    where c.r>3 
    

      with check option 插入或修改的数据必须满足视图定义的约束。

    create or replace view view_table1
    as 
    select rownum as rn,id,name from t_area where rownum <= 5 and id != 5
    WITH CHECK OPTION 
    

      

    update view_table1 set id = 5
    

      

    二: 物化视图

        定义:视图是一个虚拟表(也可以认为条语 句),基于它创建时指定的查询视图是一个虚拟表(也可以认为条语 句)。

        区别:和普通视图的区别。

          

      普通视图:存储的是sql 语句

      物化视图:存储的是sql执行的结果(表结构)

      创建物化视图:

            CREATE  MATERIALIZED VIEW view_name 
    	[BUILD IMMEDIATE(默认值)  | BUILD DEFERRED ]   //物化数据什么时候生成
    	REFRESH [FAST|COMPLETE|FORCE[默认值]]  
    	[  ON [COMMIT |DEMAND] ] 
    	AS subquery  
    

      物化数据的产生:

    [BUILD IMMEDIATE(默认值)  | BUILD DEFERRED ]   //物化数据什么时候生成
    BUILD IMMEDIATE(默认值)在物化数据时产生数据
    build deferred 在创建时不生成,在以后使用时生成。
    //使用这个生成物化数据
    begin
      DBMS_MVIEW.refresh( view_name ,'C' ); //c表示command
    end

      刷新方式:1.增量(fast增量刷新);2.完整刷新;3.自动

    【fast】增量刷新
    【complete】完整的物化视图
    【force】自动(系统自己判断什么时候进行刷新)默认
    

      手动刷新数据

    CREATE  materialized VIEW name
    AS 
    subquery

    insert(插入数据)
    select * from name(查询数据)
    begin
      DBMS_MVIEW.refresh( name ,'C' );//手动刷新数据

    end ;

      自动刷新数据

    CREATE  materialized VIEW name
    refresh
    on commit AS subquery
    insert(插入数据)
    select * from name(查询数据)

      增量刷新  只刷新自上次刷新到现在修改的

    create materialized view log on 表名 with rowid
    --创建物化视图中的语句中,必须有基表的ROWID
    
    create materialized view view_name
    refresh fast--设置增量刷新
    --刷新时机为手动刷新(默认) as sqlquery --查询物化视图 select * from view_name --插入数据 insert into commit;--提交数据 删除数据 commit; --手动刷新 begin DBMS_MVIEW.refresh(物化数据名,'C'); end;

      查看日志表

    old_new $$   :

        N:表示新值;

        O:表示旧值;

     change_vector$$:表示修改矢量,用来被的是哪个或几字段。 .此列是raw,其实oracle采用的方式就是用每个bit位

          去映射一个列。插入操作显示为:EF,删除显示为:OO更新操作则根据更新字段的位置而显示不同值。

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

    //手动刷新物化视图就会

    begin DBMS_MVIEW.refresh( 物化视图名,'C' ); end ;
    

      刷新时机:

      【on commit】提交时候进行刷新

      【on demand】手动进行刷新

    序列

       序列:是oracle提供的产生一系列唯一序列的数字的数据库对象。

        创建序列 

          create sequence 序列名称
    

        使用伪表查看序列

          select  序列名称.nextval from dual
    

        创建复杂序列

    create sequence vv6   --保存在sequences文件家中
    increment by 10     --step执行一次所要加的数
    start with 0        --开始数  必须等于或大于最小值
    maxvalue 300        --数最大值
    minvalue 0          --最小数
    cycle               --设置为循环
    cache 30            --设置时必须小于一次循环的次数
    

      索引:

        索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。

        建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。

      创建普通视图:      

      create index 索引名 on 表名(列名);
    

       创建唯一索引:

         create unique index 索引名称 on 表名(列名);
    

       创建复合索引:

        create index 索引名称 on 表名(列名,列名.....);
    

         创建反向索引:

        create index 索引名称 on 表名(列名) reverse;
    

         创建位图索引:

        create bitmap index 索引名称 on 表名(列名);
  • 相关阅读:
    EasyUi datagrid列表增加复选框
    List集合流处理类型小结
    MockMvc模拟对controller进行单元测试
    项目配置不带项目名称访问
    mongodb常用的sql语句总结
    git push时报错:Updates were rejected because the tip of your current branch is behind
    xml转json和实体类的两种方式
    win 10 关闭或打开 测试模式
    Wise Force Deleter 强制删除文件工具 ---- 亲测好用
    Win 10 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问....
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/View.html
Copyright © 2011-2022 走看看