SELECT INTO

名前

SELECT INTO -- 問い合わせの結果からの新しいテーブルの作成

概要

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 ] [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start ]
    [ FOR UPDATE [ OF tablename [, ...] ] ]

説明

SELECT INTO は新しいテーブルを作成し問い合わせによって計算されるデータを格納します。 そのデータは通常の SELECT のようにクライアントには返されません。 新しいテーブルの列は SELECTの出力列と関連するデータ型と名前を持ちます。

パラメータ

TEMPORARY or TEMP

指定された場合、テーブルは一時テーブルとして作成されます。 詳細は CREATE TABLEを見て下さい。

new_table

作成するテーブルの名前です (スキーマ修飾名でも可)。

その他の全ての入力は SELECT で詳細が説明されています。

注釈

CREATE TABLE ASは機能的には SELECT INTO と同じです。 INTO句は異なる解釈がなされるため、SELECT INTO という形式はECPGPL/pgSQLでは使用できません。そのため、構文としてはCREATE TABLE AS をお勧めします。

互換性

標準SQLでは、SELECT ... INTOは新しいテーブルを作成するのではなく、 選択する値をホストプログラムのスカラ変数で選択する値を表示するために使用されます。 これは実際、ECPG(第30章参照)やPL/pgSQL (第37章参照)で見られる使用方法です。 PostgreSQL における、テーブル作成を表す SELECT INTO の使用方法は歴史的なものです。 新しいコードではこの目的には CREATE TABLE ASを使うのが最善です。(CREATE TABLE AS も標準ではありませんが、これのほうが混乱を招く可能性が少ないです。)