天天看點

視圖

視圖(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視圖描述“使用者擁有的”視圖的列(或表的列) 

上一篇: 索引