一、視圖
視圖是一條存儲起來的 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';
本文轉自 qvodnet 51CTO部落格,原文連結:http://blog.51cto.com/bks2015/1982994