他のバージョンの文書 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

Name

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

Synopsis

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

説明

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

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

パラメータ

[LOCAL] TEMPORARY or [LOCAL] TEMP

指定されている場合は、テーブルは一時テーブルとして作成されます。一時テーブルはセッションの終りに自動的に削除されます。同じ名前を持つ既存の永続テーブルは(このセッション内では)一時テーブルが存在する間は見ることができません。一時テーブル上に作られるインデックスは自動的に一時的なものになります。

LOCAL という単語は省略可能です。

table_name

新しく作られるテーブル名です。このテーブルは既に存在するものであってはなりません。しかし、既存の永続テーブルと同じ名前を持つ一時テーブルを作ることはできます。

column_name

新しいテーブルにおける列の名前です。カンマで区切られた列名のリストを使って複数の列名を指定することができます。列名を指定しない場合は、問い合わせの出力列名からとられます。

query

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

診断

出力メッセージの要約は CREATE TABLESELECT を参照してください。

注釈

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

互換性

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

歴史

CREATE TABLE AS は、 PostgreSQL 6.3.から使用できるようになりました。

関連項目

CREATE TABLE, CREATE VIEW , SELECT, SELECT INTO