PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# 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`という形式は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';

## 互換性

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

## 関連項目

CREATE TABLE AS

前のページ | ホーム | 次のページ
SELECT | 上に戻る | SET