管理oracle檢視

zhanghjgnu發表於2008-08-11

檢視可以看成一個儲存查詢(stored query)或一個虛擬表(virtual table).查詢僅僅儲存在oracle資料字典中,實際的資料沒有存放在任何其它地方,所以建立檢視不用消耗其他的空間。檢視也可以隱藏複雜查詢,比如多表查詢,但使用者只能看見檢視。檢視可以有與他所基於表的列名不同的列名。使用者可以建立限制其他使用者訪問的檢視。
  
  1.建立檢視
   CREATE VIEW命令建立檢視,定義檢視的查詢可以建立在一個或多個表,或其他檢視上。查詢不能有FOR UPDATE子串,在早期的ORACLE8i版本中不支援ORDER BY子串,現在的版本中CREATE VIEW可以擁有ORDER BY子串。
  例:
  SQL> CREATE VIEW TOP_EMP AS
   SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary
  FROM emp  
  WHERE salary >2000
  
  使用者可以在建立檢視的同時更改列名,方法是在檢視名後立即加上要命名的列名。重新定義檢視需要包含OR REPLACE子串。
  
  SQL> CREATE VIEW TOP_EMP
  (EMPLOYEE_ID,EMPLOYEE_NAME,SALARY) AS
  SELECT empno ,ename ,salary
  FROM emp
  WHERE salary >2000
  
  如果在建立的檢視包含錯誤在正常情況下,檢視將不會被建立。但如果你需要建立一個帶錯誤的檢視必須在CREATE VIEW語句中帶上FORCE選項。如:  
  CREATE FORCE VIEW ORDER_STATUS AS
  SELECT * FROM PURCHASE_ORDERS
  WHERE STATUS='APPPOVE';
  SQL>/
  
  warning :View create with compilation errors 網管論壇bbs_bitsCN_com
  這樣將建立了一個名為ORDER_STATUS的檢視,但這樣的檢視的狀態是不合法的,如果以後狀態發生變化則可以重新編譯,其狀態也變成合法的。
   

從檢視中獲得資料

從檢視中獲得資料與從表中獲得資料基本一樣,使用者可以在連線和子查詢中使用檢視,也可以使用SQL函式,以及所有SELECT語句的字串。

插入、更新、刪除資料

使用者在一定的限制條件下可以透過檢視更新、插入、刪除資料。如果檢視連線多個表,那麼在一個時間裡只能更新一個表。所有的能被更新的列可以在資料字典USER_UPDATETABLE_COLUMNS中查到。

使用者在CREATE VIEW中可以使用了WITH子串。WITH READ ONLY子串表示建立的檢視是一個只讀檢視,不能進行更新、插入、刪除操作。WITH CHECK OPTION表示可以進行插入和更新操作,但應該滿足WHERE子串的條件。這個條件就是建立檢視WHERE子句的條件。

[@more@]

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

相關文章