CREATE [ OR REPLACE ] VIEW view [ ( column name list ) ] AS SELECT query
作成するビューの名前です (スキーマ修飾名でも可)。
ビューの列に使用する名前のリストです (省略可能)。 指定されている場合、リスト内の名前により SQL 問い合わせから生成される列名を上書きします。
ビューの列と行を生成する SQL 問い合わせ (つまり SELECT 文) です。
有効な引数についての詳細は、SELECT を参照してください。
ビューの作成に成功すると返されるメッセージです。
指定したビューがすでにデータベースに存在している場合に表示されるエラーです。
型を指定しないと、型の不明な列を持ったビューが作成されます。例えば下記のコマンドには警告が出されます。
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 では、CREATE VIEW 文に対しいくつかの追加機能を規定しています。
CREATE VIEW view [ column [, ...] ] AS SELECT expression [ AS colname ] [, ...] FROM table [ WHERE condition ] [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
全ての SQL92 コマンドのオプション句は、以下の通りです。
このオプションは、更新される可能性のあるビューに使用します。 ビューに対する全ての INSERT と UPDATE コマンドは、ビュー定義の条件を満足しているかどうかチェックされます。 条件を満たしていない場合、その更新は拒否されます。
このビューの整合性をチェックします。
このビューと依存している全てのビューの整合性をチェックします。 CASCADE または LOCAL のいずれも指定されていない場合は、CASCADE が指定されたものと仮定されます。
CREATE OR REPLACE VIEW は PostgreSQL の言語拡張です。