定義一個新的視圖。
語法
CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ]
AS query
參數
參數名稱 | 描述 |
---|---|
name | 所創建視圖的名稱(可以采用模式限定的方式引用)。 |
column name | 所創建視圖列的名稱(可選)。如果沒有使用這個參數,那么就是用查詢輸出中的列名。 |
query | 為視圖提供列和行的查詢語句。 |
描述
CREATE VIEW命令定義一個新的查詢視圖。視圖不是實際物化的,而是每一次查詢視圖的時候,都是實際運行視圖定義中查詢語句。
CREATE OR REPLACE VIEW命令的功能類似,但是如果相同名稱的視圖已經存在,那么將用新創建的視圖替代已存在視圖。
如果指定了模式名稱(例如,CREATE VIEW myschema.myview ...),那么視圖就在指定模式下創建。否則就在當前模式下創建。所創建視圖的名稱必須和同一模式下其它視圖,表,序列或者索引有所區別。
說明
- 視圖是只讀的,系統不允許在視圖上執行插入、更新或者刪除操作。通過在視圖上創建規則,將視圖上插入,更新等操作重寫為到在其他表上的相應操作,可以得到可更新視圖的效果。關于CREATE RULE 命令,參見Postgres Plus文檔集。
- 是否允許訪問視圖中引用的表由視圖所有者擁有權限來決定的。如果在使用視圖的查詢中直接調用函數,那么在視圖中調用的函數也做相同的處理。因此,使用視圖的用戶必須有權限調用視圖用到的所有函數。
示例
創建一個視圖,包含所有在部門編號為30的雇員:
CREATE VIEW dept_30 AS SELECT * FROM emp WHERE deptno = 30;