CREATE VIEW

Name

CREATE VIEW  --  新しいビューの定義

Synopsis

CREATE [ OR REPLACE ] VIEW view [ ( column name list ) ] AS SELECT query
  

入力

view

作成するビューの名前です (スキーマ修飾名でも可)。

column name list

ビューの列に使用する名前のリストです (省略可能)。 指定されている場合、リスト内の名前により SQL 問い合わせから生成される列名を上書きします。

query

ビューの列と行を生成する SQL 問い合わせ (つまり SELECT 文) です。

有効な引数についての詳細は、SELECT を参照してください。

出力

CREATE VIEW

ビューの作成に成功すると返されるメッセージです。

ERROR: Relation 'view' already exists

指定したビューがすでにデータベースに存在している場合に表示されるエラーです。

WARNING: Attribute 'column' has an unknown type

型を指定しないと、型の不明な列を持ったビューが作成されます。例えば下記のコマンドには警告が出されます。

CREATE VIEW vista AS SELECT 'Hello World'
	

一方、このコマンドには警告が出ません。

CREATE VIEW vista AS SELECT text 'Hello World'
	

説明

CREATE VIEW を実行すると、問い合わせによるビューを定義できます。ビューは物理的な実体として存在するものではありません。 実体ではないのですが、問い合わせを書き換えるルール (ON SELECT ルール) が自動的に生成され、ビューに対する SELECT 操作がサポートされています。

CREATE OR REPLACE VIEW も同様の働きをします。しかし、同じ名前のビューがすでに存在している場合は、そのビューを置き換えます。 ビューは、同じ列のセット (つまり、同じ列名およびデータ型) を生成する新規の問い合わせでのみ、置き換えることができます。

スキーマ名が付けられている場合 (たとえば、CREATE VIEW myschema.myview ...)、ビューは指定されたスキーマで作成されます。 スキーマ名がなければ、そのビューは現在のスキーマ (検索パスの前にあるスキーマ。CURRENT_SCHEMA() 参照) で作成されます。 ビューの名前は、同じスキーマ内の他のビュー、テーブル、シーケンス、もしくはインデックスとは異なる名前である必要があります。

注釈

現在のところ、ビューは読み取り専用です。システムは、ビューに対する挿入、更新、削除を許可しません。ビューに対する挿入などを他のテーブルに対する適切な処理に書き換えるルールを作成することで、更新可能なビューと同じ効果を得ることができます。 より詳細な情報については、CREATE RULE を参照して下さい。

ビューを削除するには、DROP VIEW 文を使用して下さい。

使用方法

下記の文では、全ての娯楽映画 (Comedy films) から成るビューを作成しています。

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

SELECT * FROM kinds;

 code  |           title           | did | date_prod  |  kind  | len
-------+---------------------------+-----+------------+--------+-------
 UA502 | Bananas                   | 105 | 1971-07-13 | Comedy | 01:22
 C_701 | There's a Girl in my Soup | 107 | 1970-06-11 | Comedy | 01:36
(2 rows)
   

互換性

SQL92

SQL92 では、CREATE VIEW 文に対しいくつかの追加機能を規定しています。

CREATE VIEW view [ column [, ...] ]
    AS SELECT expression [ AS colname ] [, ...]
    FROM table [ WHERE condition ]
    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
   

全ての SQL92 コマンドのオプション句は、以下の通りです。

CHECK OPTION

このオプションは、更新される可能性のあるビューに使用します。 ビューに対する全ての INSERTUPDATE コマンドは、ビュー定義の条件を満足しているかどうかチェックされます。 条件を満たしていない場合、その更新は拒否されます。

LOCAL

このビューの整合性をチェックします。

CASCADE

このビューと依存している全てのビューの整合性をチェックします。 CASCADE または LOCAL のいずれも指定されていない場合は、CASCADE が指定されたものと仮定されます。

CREATE OR REPLACE VIEWPostgreSQL の言語拡張です。