一、視圖
二、同義詞
三、序列
一、視圖
視圖是一條存儲起來的 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
黃小二 閱讀(1375)
評論(0) 編輯 收藏 所屬分類:
[DB].Oracle