[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE TABLE AS

名前

CREATE TABLE AS -- 問い合わせの結果からの新しいテーブルの作成

概要

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ (column_name [, ...] ) ]
    AS query

説明

CREATE TABLE AS はテーブルを作成し、SELECT コマンド、または、準備されたSELECTコマンドを実行するEXECUTEコマンドによって算出されるデータを格納します。 テーブルの列は SELECT の出力列と関連する名前とデータ型を持ちます(ただし この列名は新しい列名を明示したリストを渡すことで無効にすることができます)。

CREATE TABLE AS はビューの作成と似ている部分がありますが、実際は全く異なります。 CREATE TABLE AS は新しいテーブルを作成し、新しいテーブルの中身を初期化するために一度だけその問い合わせを評価します。 それ以降行なわれた、問い合わせの元テーブルに対する変更は、新しいテーブルには反映されません。 反対に、ビューは定義している SELECT 文を問い合わせられる度に再評価します。

パラメータ

TEMPORARY or TEMP

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

table_name

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

column_name

新しいテーブルにおける列の名前です。 列名を指定しない場合は、問い合わせの出力列名からとられます。 現時点では、EXECUTE の実行によってテーブルが作成される場合、列名のリストは指定されません。

query

問い合わせ文(つまり、SELECT コマンド、もしくは、準備された SELECT コマンドを実行する EXECUTEコマンド)です。 認められる構文の説明は、それぞれ、SELECT もしくは EXECUTE を参照してください。

注釈

このコマンドは、SELECT INTO と同じ機能を持ちますが、SELECT ... INTO 構文の他の使用方法と混乱する可能性が少ないため、こちらを使用する方が良いでしょう。

互換性

このコマンドは Oracle の機能を元に設計されました。 標準SQLには同等の機能を行なうコマンドはありません。 しかし、CREATE TABLEINSERT ... SELECT の多少工夫して組み合わせることで、同じことを行なうことができます。

関連項目

CREATE TABLE, CREATE VIEW, EXECUTE, SELECT, SELECT INTO