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の出力列と関連するデータ型と名前を持ちます。
指定された場合、テーブルは一時テーブルとして作成されます。 詳細はCREATE TABLEを参照してください。
作成するテーブルの名前です (スキーマ修飾名でも可)。
その他の全ての入力はSELECTで詳細が説明されています。
CREATE TABLE ASは機能的にはSELECT INTOと同じです。 INTO句は異なる解釈がなされるため、SELECT INTOという形式はECPGやPL/pgSQLでは使用できません。 そのため、構文としてはCREATE TABLE ASをお勧めします。 更に、CREATE TABLE ASはSELECT INTOが提供する機能より上位機能を提供します。
PostgreSQL 8.0より前までは、 SELECT INTOで作成されるテーブルは常にOIDを含んでいました。 PostgreSQL 8.0では、SELECT INTOによって作成されるテーブルへにOIDを含めるかどうかはdefault_with_oids設定変数で制御されます。 現在、この変数のデフォルトは真ですが、将来のリリースのPostgreSQLでは偽になるかもしれません。
filmsテーブルの最近の項目のみからなる、新しいfilms_recentテーブルを作成します。
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';