SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT [ ALL ] } select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF tablename [, ...] ] ] [ LIMIT { count | ALL } [ { OFFSET | , } start ]] where from_item can be: [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias_list ) ] ] | ( select ) [ AS ] alias [ ( column_alias_list ) ] | from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column_list ) ]
TEMPORARY もしくは TEMP を指定すると、出力テーブルはこの セッション間だけのものとして作成され、セッションを出るときに自動的に 削除されます。同じ名前を持つ既存の永続テーブルは その一時テーブルが存在する間(このセッション)は 見えません。一時テーブルで作られるどのインデックスも自動的 に一時のものになります。
作成される新しいテーブルの名前です。このテーブルは既に 存在していてはいけません。しかし、既存の永続テーブルと 同じ名前を持つ一時テーブルを作成することはできます。
その他の全ての入力は SELECT で詳細が説明されています。
SELECT INTO は新しいテーブルを作成し 問い合わせによって計算されるデータを格納します。そのデータは 通常の SELECT のようにクライアントには 返されません。新しいテーブルの列は SELECT の出力列と関連するデータ型と名前を持ちます。
Note: CREATE TABLE AS は機能的には SELECT INTO と同じです。 SELECT INTO は標準ではないので、構文は CREATE TABLE AS をお勧めします。実際、この SELECT INTO という形式は PL/pgSQL や ecpg では 有効ではありません。なぜならそれらは INTO 句を異なって解釈 するからです。