有關(guān)Oracle視圖的基本概念和創(chuàng)建
Oracle數(shù)據(jù)庫中,我們常用到視圖來建表,省時(shí)方便快捷。下面我們就來簡單介紹視圖的基本概念及Oracle視圖的創(chuàng)建。
視圖的概念
視圖是基于一張表或多張表或另外一個(gè)視圖的邏輯表。視圖不同于表,視圖本身不包含任何數(shù)據(jù)。表是實(shí)際獨(dú)立存在的實(shí)體,是用于存儲(chǔ)數(shù)據(jù)的基本結(jié)構(gòu)。而視圖只是一種定義,對(duì)應(yīng)一個(gè)查詢語句。視圖的數(shù)據(jù)都來自于某些表,這些表被稱為基表。通過視圖來查看表,就像是從不同的角度來觀察一個(gè)(或多個(gè))表。
視圖有如下一些優(yōu)點(diǎn):
* 可以提高數(shù)據(jù)訪問的安全性,通過視圖往往只可以訪問數(shù)據(jù)庫中表的特定部分,限制了用戶訪問表的全部行和列。
* 簡化了對(duì)數(shù)據(jù)的查詢,隱藏了查詢的復(fù)雜性。視圖的數(shù)據(jù)來自一個(gè)復(fù)雜的查詢,用戶對(duì)視圖的檢索卻很簡單。
* 一個(gè)視圖可以檢索多張表的數(shù)據(jù),因此用戶通過訪問一個(gè)視圖,可完成對(duì)多個(gè)表的訪問。
* 視圖是相同數(shù)據(jù)的不同表示,通過為不同的用戶創(chuàng)建同一個(gè)表的不同視圖,使用戶可分別訪問同一個(gè)表的不同部分。
視圖可以在表能夠使用的任何地方使用,但在對(duì)視圖的操作上同表相比有些限制,特別是插入和修改操作。對(duì)視圖的操作將傳遞到基表,所以在表上定義的約束條件和觸發(fā)器在視圖上將同樣起作用。
Oracle視圖的創(chuàng)建
創(chuàng)建Oracle視圖需要CREAE VIEW系統(tǒng)權(quán)限,視圖的創(chuàng)建語法如下:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 視圖名[(別名1[,別名2...])]
AS 子查詢
[WITH CHECK OPTION [CONSTRAINT 約束名]]
[WITH READ ONLY]
其中:
OR REPLACE 表示替代已經(jīng)存在的視圖。
FORCE表示不管基表是否存在,創(chuàng)建視圖。
NOFORCE表示只有基表存在時(shí),才創(chuàng)建視圖,是默認(rèn)值。
別名是為子查詢中選中的列新定義的名字,替代查詢表中原有的列名。
子查詢是一個(gè)用于定義視圖的SELECT查詢語句,可以包含連接、分組及子查詢。
WITH CHECK OPTION表示進(jìn)行視圖插入或修改時(shí)必須滿足子查詢的約束條件。后面的約束名是該約束條件的名字。
WITH READ ONLY 表示視圖是只讀的。
刪除視圖的語法如下:
DROP VIEW 視圖名;
刪除視圖者需要是視圖的建立者或者擁有DROP ANY VIEW權(quán)限。視圖的刪除不影響基表,不會(huì)丟失數(shù)據(jù)。
【編輯推薦】