無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

SELECT INTO

名前

SELECT INTO -- 問い合わせの結果からの新しいテーブルを定義する

概要

[ WITH [ RECURSIVE ] 

with_query

 [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( 

expression

 [, ...] ) ] ]
    * | 

expression

 [ [ AS ] 

output_name

 ] [, ...]
    INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] 

new_table


    [ FROM 

from_item

 [, ...] ]
    [ WHERE 

condition

 ]
    [ GROUP BY 

expression

 [, ...] ]
    [ HAVING 

condition

 [, ...] ]
    [ WINDOW 

window_name

 AS ( 

window_definition

 ) [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] 

select

 ]
    [ ORDER BY 

expression

 [ ASC | DESC | USING 

operator

 ] [ NULLS { FIRST | LAST } ] [, ...] ]
    [ LIMIT { 

count

 | ALL } ]
    [ OFFSET 

start

 [ ROW | ROWS ] ]
    [ FETCH { FIRST | NEXT } [ 

count

 ] { ROW | ROWS } ONLY ]
    [ FOR { UPDATE | SHARE } [ OF 

table_name

 [, ...] ] [ NOWAIT ] [...] ]

説明

SELECT INTO は新しいテーブルを作成し、そこに問い合わせによって計算したデータを格納します。 このデータは通常の SELECT のようにはクライアントに返されません。 新しいテーブルの列は SELECT の出力列に関連するデータ型と名前を持ちます。

パラメータ

TEMPORARY or TEMP

このオプションが指定された場合、テーブルは一時テーブルとして作成されます。 詳細は CREATE TABLE を参照してください。

UNLOGGED

指定された場合、テーブルはログをとらないテーブルとして作成されます。 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.1より前は、 SELECT INTO で作成されるテーブルはデフォルトでOIDを含んでいました。 PostgreSQL 8.1ではこの問題はありません。 新しいテーブルにOIDを含めたければ、 default_with_oids 設定変数を有効にする必要があります。 WITH OIDS 句を付けて CREATE TABLE AS を実行するという別の方法もあります。

films テーブルの最近の項目のみから構成される、新しい films_recent テーブルを作成します。

SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';

互換性

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

関連項目

CREATE TABLE AS

powered by SEO.CUG.NET