當前位置:成語大全網 - 書法字典 - 如何在Oracle中構建視圖

如何在Oracle中構建視圖

在Oracle中創建視圖

Oracle中有五種數據庫對象:表、視圖、序列、索引和同義詞。

視圖是基於壹個表或多個表或視圖的邏輯表,不包含數據。它可以用來查詢和修改表中的數據。視圖所基於的表稱為基表。

視圖是存儲在數據字典中的select語句。可以通過創建視圖來提取數據的邏輯集合或組合。

視圖的優點:

1.訪問數據庫,因為視圖可以有選擇地選擇數據庫的壹部分。

2.用戶可以通過簡單的查詢從復雜的查詢中得到結果。

3.保持數據的獨立性,盡量從多個表中檢索數據。

4.可以為相同的數據生成不同的視圖。

視圖分為簡單視圖和復雜視圖:

簡單視圖只從單個表中獲取數據。

來自多個表的復雜視圖

簡單視圖不包含函數和數據組。

復雜視圖包含

簡單視圖可以實現DML操作

不允許復雜視圖。

視圖的創建:

創建[或替換] [FORCE|NOFORCE]視圖視圖名稱

[(別名[,別名]...)]

作為子查詢

[帶檢查選項[約束約束]]

[只讀]

其中包括:

或替換:如果創建的嘗試已經存在,ORACLE將自動重建視圖;

強制:無論ORACLE是否存在於基表中,都將自動創建該視圖;

NOFORCE:僅當基表存在時,ORACLE才會創建此視圖:

別名:為視圖生成的列定義的別名;

子查詢:壹個完整的SELECT語句,其中可以定義別名;

帶檢查選項:

插入或修改的數據行必須滿足視圖定義的約束;

對於只讀:

不能在此視圖上執行任何DML操作。

例如:

創建或替換視圖部門_總和_大眾

(姓名,明薩爾,馬克斯薩爾,阿夫格薩爾)

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

來自員工e部d

其中e.deptno=d.deptno

按d.dname分組;

視圖的定義原則:

1.視圖的查詢可以使用復雜的SELECT語法,包括連接/組查詢和子查詢;

2.如果沒有WITH CHECK選項和只讀,則不能在查詢中使用它。

ORDER BY子句;

3.如果檢查選項約束沒有命名,系統會自動以SYS_Cn的形式命名;

4.或者REPLACE選項可以更改定義並重建原始視圖而不刪除它,或者再次授予對象。

許可。

視圖查詢:

成功創建視圖後,您可以從視圖中檢索數據,就像從表中檢索數據壹樣。

還可以查詢視圖的所有信息以及指定的數據行和列。

比如:

檢索數據:

SQL & gtSELECT * FROM dept _ sum _ vw

查詢視圖定義:

SELECT視圖名稱,用戶視圖中的文本。

其中文本顯示的內容是視圖定義的SELECT語句,可以通過DESC USER_VIEWS訪問。

獲取相關信息。

修改視圖:

通過或替換以相同的名稱重新創建視圖。

視圖上的DML操作:

DML運行中應遵循的原則:

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

2.當視圖包含GROUP function、GROUP BY子句和DISTINCT關鍵字時,則不會。

刪除數據行;

3.當視圖中沒有出現下列情況時,可以通過視圖修改基表數據或插入數據:

A.視圖包含GROUP function、GROUP BY子句和DISTINCT關鍵字;

B.由表達式定義的列;

C.ROWNUM偽列

d未在視圖中選擇的基表中的其他列被定義為非空的,沒有默認值。

視圖可以用來維護數據庫的完整性,但是它們的功能是有限的。

通過視圖實施引用完整性約束可以在數據庫級別實施約束。

WITH CHECK OPTION子句限定:

通過視圖執行的插入和更新不能創建視圖無法檢索的數據行。

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

例如:

創建或替換視圖vw_emp20

AS SELECT * FROM emp

其中deptno=20

帶檢查選項約束vw _ emp20 _ ck

視圖已創建。

查詢結果:

從vw_emp20中選擇empno,ename,job

EMPNO ENAME作業

- - -

史密斯職員7369號

7566瓊斯經理

7902福特分析師

修改:

更新vw_emp20

設置deptno=20

其中empno = 7902

將會生成壹個錯誤:

更新vw_emp20

*

錯誤在第壹行:

ORA-01402:帶有檢查選項的視圖違反了WHERE子句。

刪除視圖:

DROP VIEW VIEW_NAME語句刪除視圖。

刪除視圖的定義不會影響基表中的數據。

只有視圖的所有者和有權刪除視圖視圖的用戶才能刪除視圖。

刪除視圖後,基於已刪除視圖的其他視圖或應用程序將無效。