.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "SELECT INTO" "" "2007-05-04" "SQL - 言語" "SQLコマンド"
.SH NAME
SELECT INTO \- 問い合わせの結果からの新しいテーブルを定義する

.SH SYNOPSIS
.sp
.nf
SELECT [ ALL | DISTINCT [ ON ( \fIexpression\fR [, ...] ) ] ]
    * | \fIexpression\fR [ AS \fIoutput_name\fR ] [, ...]
    INTO [ TEMPORARY | TEMP ] [ TABLE ] \fInew_table\fR
    [ FROM \fIfrom_item\fR [, ...] ]
    [ WHERE \fIcondition\fR ]
    [ GROUP BY \fIexpression\fR [, ...] ]
    [ HAVING \fIcondition\fR [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL ] \fIselect\fR ]
    [ ORDER BY \fIexpression\fR [ ASC | DESC | USING \fIoperator\fR ] [, ...] ]
    [ LIMIT { \fIcount\fR | ALL } ]
    [ OFFSET \fIstart\fR ]
    [ FOR { UPDATE | SHARE } [ OF \fItable_name\fR [, ...] ] [ NOWAIT ] [...] ]
.sp
.fi
.SH "説明"
.PP
\fBSELECT INTO\fRは新しいテーブルを作成し、そこに問い合わせによって計算したデータを格納します。
このデータは通常の\fBSELECT\fRのようにはクライアントに返されません。
新しいテーブルの列は\fBSELECT\fRの出力列に関連するデータ型と名前を持ちます。
.SH "パラメータ"
.TP
\fBTEMPORARY or TEMP\fR
このオプションが指定された場合、テーブルは一時テーブルとして作成されます。
詳細はCREATE TABLE [\fBcreate_table\fR(l)]を参照してください。
.TP
\fB\fInew_table\fB\fR
作成するテーブルの名前です（スキーマ修飾名も可）。
.PP
その他のパラメータについては、SELECT [\fBselect\fR(l)]で詳細に説明されています。
.PP
.SH "注釈"
.PP
CREATE TABLE AS [\fBcreate_table_as\fR(l)]は機能的には\fBSELECT INTO\fRと同じです。
INTO句の解釈が異なるため、\fBSELECT INTO\fRという形式は\fBECPG\fRや\fBPL/pgSQL\fRでは使用できません。
そのため、\fBCREATE TABLE AS\fR構文を使用することをお勧めします。
さらに、\fBCREATE TABLE AS\fRは、\fBSELECT INTO\fRの機能に加え、さらに多くの機能を提供します。
.PP
PostgreSQL 8.1より前は、 \fBSELECT INTO\fRで作成されるテーブルはデフォルトでOIDを含んでいました。
PostgreSQL 8.1ではこの問題はありません。
新しいテーブルにOIDを含めたければ、 default_with_oids設定変数を有効にする必要があります。
WITH OIDS句を付けて\fBCREATE TABLE AS\fRを実行するという別の方法もあります。
.SH "例"
.PP
filmsテーブルの最近の項目のみから構成される、新しいfilms_recentテーブルを作成します。
.sp
.nf
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
.sp
.fi
.SH "互換性"
.PP
標準SQLでは、\fBSELECT INTO\fRは新しいテーブルの作成ではなく、選択した値をホストプログラムのスカラ変数とするために使われます。
これは実際、\fBECPG\fR（in the documentationを参照）や\fBPL/pgSQL\fR（in the documentationを参照）で見られる使用方法です。
PostgreSQLにおいて、テーブルを作成する\fBSELECT INTO\fRの用法は歴史的なものです。
新しいコードでは、テーブルの作成には\fBCREATE TABLE AS\fRを使うのが最善です。
.SH "関連項目"
CREATE TABLE AS [\fBcreate_table_as\fR(l)]
