.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "CREATE VIEW" "" "2003-08-02" "SQL - 言語" "SQL コマンド"
.SH NAME
CREATE VIEW \- 新しいビューの定義
.SH SYNOPSIS
.sp
.nf
CREATE [ OR REPLACE ] VIEW \fIview\fR [ ( \fIcolumn name list\fR ) ] AS SELECT \fIquery\fR
  
.sp
.fi
.SS "入力"
.PP
.TP
\fB\fIview\fB\fR
作成するビューの名前です (スキーマ修飾名でも可)。
.TP
\fB\fIcolumn name list\fB\fR
ビューの列に使用する名前のリストです (省略可能)。 指定されている場合、リスト内の名前により SQL 問い合わせから生成される列名を上書きします。
.TP
\fB\fIquery\fB\fR
ビューの列と行を生成する SQL 問い合わせ (つまり \fBSELECT\fR 文) です。

有効な引数についての詳細は、SELECT [\fBselect\fR(l)] を参照してください。
.PP
.SS "出力"
.PP
.TP
\fBCREATE VIEW\fR
ビューの作成に成功すると返されるメッセージです。
.TP
\fBERROR: Relation '\fIview\fB' already exists\fR
指定したビューがすでにデータベースに存在している場合に表示されるエラーです。
.TP
\fBWARNING: Attribute '\fIcolumn\fB' has an unknown type\fR
型を指定しないと、型の不明な列を持ったビューが作成されます。例えば下記のコマンドには警告が出されます。
.sp
.nf
CREATE VIEW vista AS SELECT 'Hello World'
	
.sp
.fi
一方、このコマンドには警告が出ません。
.sp
.nf
CREATE VIEW vista AS SELECT text 'Hello World'
	
.sp
.fi
.PP
.SH "説明"
.PP
\fBCREATE VIEW\fR を実行すると、問い合わせによるビューを定義できます。ビューは物理的な実体として存在するものではありません。 実体ではないのですが、問い合わせを書き換えるルール (ON SELECT ルール) が自動的に生成され、ビューに対する SELECT 操作がサポートされています。
.PP
\fBCREATE OR REPLACE VIEW\fR も同様の働きをします。しかし、同じ名前のビューがすでに存在している場合は、そのビューを置き換えます。 ビューは、同じ列のセット (つまり、同じ列名およびデータ型) を生成する新規の問い合わせでのみ、置き換えることができます。
.PP
スキーマ名が付けられている場合 (たとえば、CREATE VIEW myschema.myview ...)、ビューは指定されたスキーマで作成されます。 スキーマ名がなければ、そのビューは現在のスキーマ (検索パスの前にあるスキーマ。CURRENT_SCHEMA() 参照) で作成されます。 ビューの名前は、同じスキーマ内の他のビュー、テーブル、シーケンス、もしくはインデックスとは異なる名前である必要があります。
.SS "注釈"
.PP
現在のところ、ビューは読み取り専用です。システムは、ビューに対する挿入、更新、削除を許可しません。ビューに対する挿入などを他のテーブルに対する適切な処理に書き換えるルールを作成することで、更新可能なビューと同じ効果を得ることができます。 より詳細な情報については、CREATE RULE [\fBcreate_rule\fR(l)] を参照して下さい。
.PP
ビューを削除するには、\fBDROP VIEW\fR 文を使用して下さい。
.SH "使用方法"
.PP
下記の文では、全ての娯楽映画 (Comedy films) から成るビューを作成しています。
.sp
.nf
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)
   
.sp
.fi
.SH "互換性"
.SS "SQL92"
.PP
SQL92 では、\fBCREATE VIEW\fR 文に対しいくつかの追加機能を規定しています。
.sp
.nf
CREATE VIEW \fIview\fR [ \fIcolumn\fR [, ...] ]
    AS SELECT \fIexpression\fR [ AS \fIcolname\fR ] [, ...]
    FROM \fItable\fR [ WHERE \fIcondition\fR ]
    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
   
.sp
.fi
.PP
全ての SQL92 コマンドのオプション句は、以下の通りです。
.TP
\fBCHECK OPTION\fR
このオプションは、更新される可能性のあるビューに使用します。 ビューに対する全ての \fBINSERT\fR と \fBUPDATE\fR コマンドは、ビュー定義の条件を満足しているかどうかチェックされます。 条件を満たしていない場合、その更新は拒否されます。
.TP
\fBLOCAL\fR
このビューの整合性をチェックします。
.TP
\fBCASCADE\fR
このビューと依存している全てのビューの整合性をチェックします。 CASCADE または LOCAL のいずれも指定されていない場合は、CASCADE が指定されたものと仮定されます。
.PP
.PP
\fBCREATE OR REPLACE VIEW\fR は PostgreSQL の言語拡張です。
