oracular (7) create_view.7.gz

Provided by: manpages-zh_1.6.4.0-1_all bug

NAME

       CREATE VIEW - 定義一個檢視

SYNOPSIS

       CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query

DESCRIPTION 描述

       CREATE VIEW 定義一個查詢的檢視。 這個檢視不是物理上實際存在(於磁碟)的。具體的說,自動生成一個改寫索引規
       則(一個 ON SELECT 規則)的查詢用以支援在檢視上的檢索。

       CREATE OR REPLACE VIEW 類似,不過是如果一個同名的檢視已經存在,那麼就替換它。  你只能用一個生成相同欄位的
       新查詢替換一個檢視(也就是說,同樣欄位名和資料型別)。

        如果給出了一個模式名(比如,CREATE VIEW myschema.myview ...),那麼該檢視是在指定的模式中建立的。 否則它
       是在當前模式中建立的。 該檢視名字必需和同一模式中任何其它檢視,表,序列或者索引的名字不同。

PARAMETERS 引數

       name
               所要建立的檢視名稱(可以有模式修飾)。

       column_name
               一個可選的名字列表,用於當作檢視的欄位名。如果沒有給出, 欄位名取自查詢。

       query
               一個將為檢視提供行和列的查詢(也就是一條 SELECT 語句)。

               請參閱 SELECT [select(7)] 獲取有效查詢的更多資訊。

NOTES 注意

        目前,檢視是隻讀的:系統將不允許在檢視上插入,更新,或者刪除資料。  你可以透過在檢視上建立把插入等動作重
       寫為向其它表做合適操作的規則來實現可更新檢視的效果。 更多資訊詳見 CREATE RULE [create_rule(7)].

        使用 DROP VIEW 語句刪除檢視

        請注意檢視欄位的名字和型別不一定是你們期望的那樣。比如,

       CREATE VIEW vista AS SELECT 'Hello World';

        在兩個方面很糟糕:欄位名預設是 ?column?,並且欄位的資料型別預設是 unknown。 如果你想檢視的結果是一個字串
       文字,那麼用類似下面這樣的東西

       CREATE VIEW vista AS SELECT text 'Hello World' AS hello;

        對檢視引用的表的訪問的許可權由檢視的所有者決定。  不過,在視圖裡呼叫的函式當作他們直接從使用檢視的查詢裡
       呼叫看待。 因此,檢視的使用者必須有使用檢視呼叫的所有函式的許可權。

EXAMPLES 例子

        建立一個由所有喜劇電影組成的檢視:

       CREATE VIEW comedies AS
           SELECT *
           FROM films
           WHERE kind = 'Comedy';

COMPATIBILITY 相容性

        SQL 標準為 CREATE VIEW 聲明瞭一些附加的功能:

       CREATE VIEW name [ ( column [, ...] ) ]
           AS query
           [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]

        完整的SQL命令可選的子句是:

       CHECK OPTION
               這個選項用於可更新檢視。  所有對檢視的INSERT和UPDATE都要經過檢視定義條件的校驗。 (也就是說,新資
              料應該可以透過檢視看到。)如果沒有透過校驗,更新將被拒絕。

       LOCAL
               對這個檢視進行完整性檢查。

       CASCADE
               對此檢視和任何相關檢視進行完整性檢查。 在既沒有宣告 CASCADE 也沒有宣告 LOCAL 時,假設為 CASCADE。

       CREATE OR REPLACE VIEW 是 PostgreSQL 的擴充套件。

譯者

       Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh