ORACLE 檢視介紹

itpub120發表於2006-12-27

Oracle檢視

Oracle的資料庫物件分為五種:表,檢視,序列,索引和同義詞。

檢視是基於一個表或多個表或檢視的邏輯表,本身不包含資料,透過它可以對錶裡面的資料進行查詢和修改。檢視基於的表稱為基表。

檢視是儲存在資料字典裡的一條select語句。 透過建立檢視可以提取資料的邏輯上的集合或組合。

[@more@]

檢視的優點:

1.對資料庫的訪問,因為檢視可以有選擇性的選取資料庫裡的一部分。

2.使用者透過簡單的查詢可以從複雜查詢中得到結果。

3.維護資料的獨立性,試圖可從多個表檢索資料。

4.對於相同的資料可產生不同的檢視。

檢視分為簡單檢視和複雜檢視:

簡單檢視只從單表裡獲取資料
複雜檢視從多表

簡單檢視不包含函式和資料組
複雜檢視包含

簡單檢視可以實現DML操作
複雜檢視不可以(但是在用了INSTEAD OF 觸發器後就可以).

檢視的建立:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name

[(alias[, alias]...)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

其中:

OR REPLACE :若所建立的試圖已經存在,ORACLE自動重建該檢視;

FORCE :不管基表是否存在ORACLE都會自動建立該檢視;

NOFORCE :只有基表都存在ORACLE才會建立該檢視:

alias :為檢視產生的列定義的別名;

subquery :一條完整的SELECT語句,可以在該語句中定義別名;

WITH CHECK OPTION

WITH READ ONLY 插入或修改的資料行必須滿足檢視定義的約束;

例如:該檢視上不能進行任何DML操作。

CREATE OR REPLACE VIEW dept_sum_vw

(name,minsal,maxsal,avgsal)

AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)

FROM emp e,dept d

WHERE e.deptno=d.deptno

GROUP BY d.dname;

檢視的定義原則:

1.檢視的查詢可以使用複雜的SELECT語法,包括連線/分組查詢和子查詢;

2.在沒有WITH CHECK OPTION READ ONLY 的情況下,查詢中不能使用

ORDER BY 子句;

3.如果沒有為CHECK OPTION約束命名,系統會自動為之命名,形式為SYS_Cn;

4.OR REPLACE選項可以不刪除原檢視便可更改其定義並重建,或重新授予物件

檢視的查詢:許可權。

SQL>SELECT * FROM dept_sum_vw檢視建立成功後,可以從檢視中檢索資料,這點和從表中檢索資料一樣。

還可以查詢檢視的全部資訊和指定的資料行和列。

如:

檢索資料:

SELECT view_name,text from user_views;

查詢檢視定義:

得到相關資訊。 修改檢視:其中text顯示的內容為檢視定義的SELECT語句,可透過DESC USER_VIEWS

檢視上的透過OR REPLACE 重新建立同名檢視即可。

DML 操作:

DML操作應遵循的原則:

1.簡單檢視可以執行DML操作;

2.在檢視包含GROUP 函式,GROUP BY子句,DISTINCT關鍵字時不能

刪除資料行;

3.在檢視不出現下列情況時可透過檢視修改基表資料或插入資料:

a.檢視中包含GROUP 函式,GROUP BY子句,DISTINCT關鍵字;

b.使用表示式定義的列;

c.ROWNUM偽列。

d.基表中未在檢視中選擇的其他列定義為非空且無預設值。

檢視可用於保持資料庫的完整性,但作用有限。

透過檢視執行引用完整性約束可在資料庫級執行約束。

WITH CHECK OPTION

子句限定:

檢視的刪除:透過檢視執行的INSERTSUPDATES操作不能建立該檢視檢索不到的資料行,

因為它會對插入或修改的資料行執行完整性約束和資料有效性檢查。

DROP VIEW VIEW_NAME語句刪除檢視。

刪除檢視的定義不影響基表中的資料。

只有檢視所有者和具備DROP VIEW許可權的使用者可以刪除檢視。

檢視被刪除後,基於被刪除檢視的其他檢視或應用將無效。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-886721/,如需轉載,請註明出處,否則將追究法律責任。

相關文章