INSERT

Name

INSERT  --  テーブルに新しい行を挿入する。

Synopsis

INSERT INTO table [ ( column [, ...] ) ]
    { VALUES ( expression [, ...] ) | SELECT query }
  

入力

table

既存のテーブル名。

column

table 内のカラム名。

expression

column に代入す る有効な式または値。

query

有効な問い合わせ。有効な引数に関するより詳細な説明については SELECT 文を参照して下さい。

出力

INSERT oid 1

1 行だけ挿入された場合に返されるメッセージ。 oid は挿入された行の OID 値です。

INSERT 0 #

複数の行が挿入された場合に返されるメッセージ。 # は 挿入された行数です。

説明

INSERT を使用して、クラスもしくはテー ブルに新しい行を挿入することができます。 1 度に 1 つの行を挿入することも、問い合わせの結果として 複数の行を挿入することもできます。 対象リスト内の列はどのような順番でも指定できます。

対象リストに無い列には、全てデフォルト値、つまり、DEFAULT 句の値として宣言されたもの、または、NULL が挿入されます。 Postgres は NOT NULL として宣言され た列へ NULL を挿入しようとした場合、その新しい列を拒否 します。

各列の式が正確なデータ型でない場合は、自動的に型の強制が行な われます。

テーブルに追加するためには、そのテーブルに INSERT 権限を持っていな ければいけません。同様に、WHERE 句で指定したテーブル全てについて SELECT 権限を持っていなければなりません。

使用法

films テーブルに 1 つの行を挿入します。

INSERT INTO films VALUES
    ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
   

2 番目の例では、date_prod 列を省略していま す。そのため、そこにはデフォルト値 NULL が入ります。

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
   

distributors テーブルに1つの行を挿入します。 name 列だけが指定されていることに注目し て下さい。このため、省略された did 列に はそのデフォルト値が代入されることになります。

INSERT INTO distributors (name) VALUES ('British Lion');
   

tmp テーブルから films テーブルに複数の行を 挿入します。

INSERT INTO films SELECT * FROM tmp;
   

配列に挿入します。(配列に関するより詳細な情報については PostgreSQL ユーザガイド を参照して下さい。)

-- 三目並べ用の空の 3x3 のゲーム盤を作成します。
-- (以下の問い合わせは全て同じ属性 board を作成します。)

INSERT INTO tictactoe (game, board[1:3][1:3])
    VALUES (1,'{{"","",""},{},{"",""}}');
INSERT INTO tictactoe (game, board[3][3])
    VALUES (2,'{}');
INSERT INTO tictactoe (game, board)
    VALUES (3,'{{,,},{,,},{,,}}');
   

互換性

SQL92

INSERTSQL92 と完全に互 換性があります。query 句の機能については制限があり、これについては SELECT にて記述されています。