Oracle數據庫的視圖


使用視圖的優點:
    1.簡化數據操作:視圖可以簡化用戶處理數據的方式。
    2.着重於特定數據:不必要的數據或敏感數據可以不出現在視圖中。
    3.視圖提供了一個簡單而有效的安全機制,可以定制不同用戶對數據的訪問權限。

    4.提供向后兼容性:視圖使用戶能夠在表的架構更改時為表創建向后兼容接口。

創建或修改視圖語法

    CREATE [OR REPLACE] [FORCE] VIEW view_name
        AS subquery
        [WITH CHECK OPTION ]
        [WITH READ ONLY]

    OR REPLACE :若所創建的試圖已經存在,ORACLE 自動重建該視圖;
    FORCE :不管基表是否存在 ORACLE 都會自動創建該視圖;
    subquery :一條完整的 SELECT 語句,可以在該語句中定義別名;
    WITH CHECK OPTION :插入或修改的數據行必須滿足視圖定義的約束;
    WITH READ ONLY :該視圖上不能進行任何 DML 操作。

刪除視圖語法
    DROP VIEW view_name

    鍵保留表是理解連接視圖修改限制的一個基本概念。該表的主鍵列全部顯示在視
    圖中,並且它們的值在視圖中都是唯一且非空的。也就是說,表的鍵值在一個連
    接視圖中也是鍵值,那么就稱這個表為鍵保留表。

物化視圖:

    創建物化視圖語法、

        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 DEFERRED 則在創建時不生成數據,以后根據需要再生成數據。
        默認為 BUILD IMMEDIATE。
        刷新(REFRESH):指當基表發生了 DML 操作后,物化視圖何時采用哪種
        方式和基表進行同步。
        REFRESH 后跟着指定的刷新方法有三種:FAST、COMPLETE、FORCE。

        FAST 刷新采用增量刷新,只刷新自上次刷新以后進行的修改。

        注意:創建增量刷新的物化視圖,必須

                create materialized view log on t_address with rowid;
                create materialized view log on t_area with rowid

                1. 創建物化視圖中涉及表的物化視圖日志。
                2. 在查詢語句中,必須包含所有表的 rowid ( 以 rowid 方式建立物化視圖日志 )

        COMPLETE 刷新對整 個物化視圖進行完全的刷新。

        如果選擇 FORCE 方式,則 Oracle 在刷新時會去判 斷是否可以進行快速刷新,

        如果可以則采用 FAST 方式,否則采用 COMPLETE 的方式。

        FORCE 是默認的方式。
        刷新的模式有兩種:ON DEMAND 和 ON COMMIT。ON DEMAND 指需要
        手動刷新物化視圖(默認)。ON COMMIT 指在基表發生 COMMIT 操作時自動
        刷新

        手動刷新物化視圖代碼:

                begin
                        DBMS_MVIEW.refresh('物化視圖表名稱','C');
                end;
                或者通過下面的命令手動刷新物化視圖:
                 EXEC DBMS_MVIEW.refresh('物化視圖表名稱','C');
                 注意:此語句需要在命令窗口中執行。

                    C:代表 complete

序列:

        序列是 ORACLE 提供的用於產生一系列唯一數字的數據庫對象。

    創建序列語法:
        create sequence 序列名稱
        通過序列的偽列來訪問序列的值
        NEXTVAL 返回序列的下一個值
        CURRVAL 返回序列的當前值

        提取下一個值
       select 序列名稱.nextval from dual
       提取當前值
        select 序列名稱.currval from dual

創建復雜序列

        CREATE SEQUENCE sequence //創建序列名稱
        [INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果是負數就遞減 默認是 1
        [START WITH n] //開始的值,遞增默認是 minvalue 遞減是 maxvalue
        [{MAXVALUE n | NOMAXVALUE}] //最大值
        [{MINVALUE n | NOMINVALUE}] //最小值
        [{CYCLE | NOCYCLE}] //循環/不循環
        [{CACHE n | NOCACHE}];//分配並存入到內存中

刪除序列:
       
DROP SEQUENCE 序列名稱;

索引:

        索引是用於加速數據存取的數據對象。合理的使用索引可以大大降低 i/o 次
        數,從而提高數據訪問性能。
        索引是需要占據存儲空間的,也可以理解為是一種特殊的數據。形式類似於
        下圖的一棵“樹”,而樹的節點存儲的就是每條記錄的物理地址,也就是我們提
        到的偽列(ROWID)

普通索引

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

唯一索引:

            如果我們需要在某個表某個列創建索引,而這列的值是不會重復的。這是我們可
            以創建唯一索引。

            語法

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

復合索引:

            語法:
            create index 索引名稱 on 表名(列名,列名.....);

反向鍵索引:

            應用場景:當某個字段的值為連續增長的值,如果構建標准索引,會形成歪脖子
            樹。這樣會增加查詢的層數,性能會下降。建立反向鍵索引,可以使索引的值變
            得不規則,從而使索引樹能夠均勻分布。

            語法:
            create index 索引名稱 on 表名(列名) reverse;

位圖索引:

            使用場景:位圖索引適合創建在低基數列上
            位圖索引不直接存儲 ROWID,而是存儲字節位到 ROWID 的映射
            優點:減少響應時間,節省空間占用
            語法:
            create bitmap index 索引名稱 on 表名(列名);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM