視圖(view),也稱虛表, 不占用實體空間,這個也是相對概念,因為視圖本身的定義語句還是要存儲在資料字典裡的。視圖隻有邏輯定義。每次使用的時候,隻是重新執行SQL。
優點
1、可以限制使用者隻能通過視圖檢索資料。這樣就可以對最終使用者屏蔽建表時底層的基表。
2、可以将複雜的查詢儲存為視圖。可以對最終使用者屏蔽一定的複雜性。
3、限制某個視圖隻能通路基表中的部分列或者部分行的特定資料。這樣可以實作一定的安全性。
4、從多張基表中按一定的業務邏輯抽出使用者關心的部分,形成一張虛拟表。
1、需要權限:
a) 使用者必須具有create view系統權限;
b) 要在其他方案中建立視圖,使用者必須具有create any view系統權限
2、文法:
3、參數說明
a) OR REPLACE:如果視圖已經存在,則替換舊視圖。
b) FORCE:即使基表不存在,也可以建立該視圖,但是該視圖不能正常使用,當基表建立成功後,視圖才能正常使用。
c) NOFORCE:如果基表不存在,無法建立視圖,該項是預設選項。
d) WITH READ ONLY:預設可以通過視圖對基表執行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能為空,但是該列沒有出現在視圖中,則不能通過視圖執行insert操作),WITH READ ONLY說明視圖是隻讀視圖,不能通過該視圖進行增删改操作。現實開發中,基本上不通過視圖對表中的資料進行增删改操作。
1、了解更新原理
第一步:将針對視圖的SQL語句與視圖的定義語句(儲存在資料字典中)“合并”成一條SQL語句
第二步:在記憶體結構的共享SQL區中“解析”(并優化)合并後的SQL語
第三步:“執行”SQL語句
2、查詢視圖“可更新”(包括“增删改”)的列
a) dba_updatable_columns——顯示資料庫所有視圖中的所有列的可更新狀态
b) all_updatable_columns——顯示使用者可通路的視圖中的所有列的可更新狀态
c) user_updatable_columns——顯示使用者擁有的視圖中的所有列的可更新狀态
使用資料字典視圖
1、dba_views——DBA視圖描述資料庫中的所有視圖
2、all_views——ALL視圖描述使用者“可通路的”視圖
3、user_views——USER視圖描述“使用者擁有的”視圖
4、dba_tab_columns——DBA視圖描述資料庫中的所有視圖的列(或表的列)
5、all_tab_columns——ALL視圖描述使用者“可通路的”視圖的列(或表的列)
6、user_tab_columns——USER視圖描述“使用者擁有的”視圖的列(或表的列)