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

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

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