隨筆-7  評論-24  文章-102  trackbacks-0


          一、視圖
          二、同義詞
          三、序列



          一、視圖
              視圖是一條存儲起來的 SELECT 語句,是數據的顯示方式,通過視圖可以限制用戶訪問行、列、或更新表內容。


          1.1、基表
          組成視圖的表稱為基表。在 Oracle 中,不能對有多個基表的視圖進行更新,此類操作可以利用"替換觸發器"完成。


          1.2、視圖的更新約束
          [WITH CHECK OPTION] 選項可以約束 對視圖更新值 符合 視圖的WHERE條件。


          1.3、只讀約束
          [WITH READ ONLY] 選項和 視圖查詢語句包含 GROPU BY/SUM 等聚合函數、DISTINCT 關鍵字時視圖不允許更新。


          1.4、查看視圖內容
          DESC user_views;
          SELECT text FROM user_views WHERE view_name='V_READ';

          一個視圖的例子:
          CREATE OR REPLACE VIEW myview
          AS
          SELECT * FROM books WHERE price>30
          WITH CHECK OPTION;
          /* 當利用視圖插入一個 price<=30 的數據時會報錯 */



          二、同義詞
          同義詞是一個對象的一個別名,利用同義詞,可以方便的操縱不同用戶模式下的對象,簡化編碼。

          使用同義詞之前要確保用戶擁有訪問該對象的權限。
          當公有對象(公有同義詞)和本地對象具有相同的名稱時,本地對象優先。
          ● 公有同義詞:DBA建立,所有用戶共同擁有。CREATE PUBLIC SYNONYM ...
          ● 私有同義詞:用戶建立,使用與該用戶(對象,可被授權)。

          CREATE OR REPLACE SYNONYM dept  FOR scott.dept;
          SELECT * FROM dept;

          DESC user_synonyms;
          SELECT synonym_name, table_name, table_owner FROM user_synonyms;



          三、序列
              序列是用來生成唯一、連續的整數的數據庫對象。它通常用來自動生成主鍵或唯一鍵。序列可以按升序、降序排列。
          序列是一個獨立型事務,不受提交或回滾事務影響。


          3.1、創建
          CREATE SEQUENCE sequence_name
            [START WITH integer]            /* 序列起始值,升序默認為最小值,降序默認為最大值 */
            [INCREMENT BY integer]        /* 遞增量,默認為 1, */
            [MAXVALUE integer | NOMAXVALUE]    /* 最大值,默認為 NOMAXVALUE */
            [MINVALUE integer | NOMINVALUE]    /* 最小值,必須小于等于起始值和 小于最大值 */
            [CYCLE | NOCYCLE]            /* 序列到達最大值后是否循環,默認為 NOCYCLE 不循環 */
            [CACHE integer | NOCACHE];        /* 是否預分配序列號,默認緩存20個序列號 */

          3.2、訪問
            NEXTVAL 偽列:返回一個新的序列值。
            CURRVAL 偽列:內存中最后一次引用 NEXTVAL 的返回值,也就是序列的當前值。

          INSERT INTO t1 VALUES(t1_seq.NEXTVAL, 'aaa');
          SELECT t1_seq.CURRVAL FROM dual;


          3.3、修改
              序列建立后只能修改 最大/最小值、增量值、序列號緩存大小,不能修改起始值,并且保證序列最大/最小值符合規則。


          3.4、查看
          DESC user_sequences;
          SELECT * FROM user_sequences WHERE SEQUENCE_NAME = 'T1_SEQ';



          posted on 2008-10-28 16:51 黃小二 閱讀(1380) 評論(0)  編輯  收藏 所屬分類: [DB].Oracle
          主站蜘蛛池模板: 磐安县| 黄龙县| 彩票| 乌什县| 芮城县| 普定县| 商河县| 永平县| 原平市| 阿城市| 若尔盖县| 灯塔市| 封开县| 酉阳| 罗甸县| 九台市| 金寨县| 通城县| 林周县| 荣昌县| 綦江县| 隆回县| 兰考县| 磐石市| 石屏县| 织金县| 临清市| 河北区| 陆河县| 阿尔山市| 安泽县| 碌曲县| 冕宁县| 南汇区| 宜兰市| 青州市| 莎车县| 长治市| 瑞昌市| 岳阳市| 仙桃市|