隨筆-7  評(píng)論-24  文章-102  trackbacks-0


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



          一、視圖
              視圖是一條存儲(chǔ)起來(lái)的 SELECT 語(yǔ)句,是數(shù)據(jù)的顯示方式,通過(guò)視圖可以限制用戶訪問(wèn)行、列、或更新表內(nèi)容。


          1.1、基表
          組成視圖的表稱(chēng)為基表。在 Oracle 中,不能對(duì)有多個(gè)基表的視圖進(jìn)行更新,此類(lèi)操作可以利用"替換觸發(fā)器"完成。


          1.2、視圖的更新約束
          [WITH CHECK OPTION] 選項(xiàng)可以約束 對(duì)視圖更新值 符合 視圖的WHERE條件。


          1.3、只讀約束
          [WITH READ ONLY] 選項(xiàng)和 視圖查詢語(yǔ)句包含 GROPU BY/SUM 等聚合函數(shù)、DISTINCT 關(guān)鍵字時(shí)視圖不允許更新。


          1.4、查看視圖內(nèi)容
          DESC user_views;
          SELECT text FROM user_views WHERE view_name='V_READ';

          一個(gè)視圖的例子:
          CREATE OR REPLACE VIEW myview
          AS
          SELECT * FROM books WHERE price>30
          WITH CHECK OPTION;
          /* 當(dāng)利用視圖插入一個(gè) price<=30 的數(shù)據(jù)時(shí)會(huì)報(bào)錯(cuò) */



          二、同義詞
          同義詞是一個(gè)對(duì)象的一個(gè)別名,利用同義詞,可以方便的操縱不同用戶模式下的對(duì)象,簡(jiǎn)化編碼。

          使用同義詞之前要確保用戶擁有訪問(wèn)該對(duì)象的權(quán)限。
          當(dāng)公有對(duì)象(公有同義詞)和本地對(duì)象具有相同的名稱(chēng)時(shí),本地對(duì)象優(yōu)先。
          ● 公有同義詞:DBA建立,所有用戶共同擁有。CREATE PUBLIC SYNONYM ...
          ● 私有同義詞:用戶建立,使用與該用戶(對(duì)象,可被授權(quán))。

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

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



          三、序列
              序列是用來(lái)生成唯一、連續(xù)的整數(shù)的數(shù)據(jù)庫(kù)對(duì)象。它通常用來(lái)自動(dòng)生成主鍵或唯一鍵。序列可以按升序、降序排列。
          序列是一個(gè)獨(dú)立型事務(wù),不受提交或回滾事務(wù)影響。


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

          3.2、訪問(wèn)
            NEXTVAL 偽列:返回一個(gè)新的序列值。
            CURRVAL 偽列:內(nèi)存中最后一次引用 NEXTVAL 的返回值,也就是序列的當(dāng)前值。

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


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


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



          posted on 2008-10-28 16:51 黃小二 閱讀(1380) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): [DB].Oracle
          主站蜘蛛池模板: SHOW| 根河市| 涟水县| 南郑县| 永年县| 司法| 钟祥市| 通州市| 洛隆县| 西乌珠穆沁旗| 东兴市| 车致| 石林| 晋江市| 恩施市| 尉犁县| 迁西县| 环江| 白银市| 互助| 禄劝| 金塔县| 贡嘎县| 潍坊市| 海阳市| 虹口区| 榆中县| 忻城县| 安远县| 屏东县| 平远县| 沛县| 湖南省| 财经| 揭东县| 和田市| 高淳县| 芜湖县| 雷州市| 崇左市| 天柱县|