INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | SELECT query }
INSERT を使用して、テーブルに新しい行を挿入することができます。1 度に 1 つの行を挿入することも可能ですし、問い合わせの結果として複数の行を挿入することもできます。対象リスト内の列はどのような順番でも指定できます。
対象リストに無い各列には、DEFAULT句の値として宣言されたデフォルト値、 または、NULLが挿入されます。 NOT NULL と宣言された列に NULL が挿入されると、PostgreSQL はその新しい列を拒否します。
各列の表示が正しいデータ型でない場合は、自動的に型の強制が行なわれます。
テーブルに追加するためには、そのテーブルに対してINSERT権限を持っている必要があります。 また、WHERE句で指定したテーブル全てに対して SELECT権限を持っている必要があります。
下記のコマンドはfilmsテーブルに1つの行を挿入します。
INSERT INTO films VALUES ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
この例では、最後の列lenを省略しています。 したがって、そこにはデフォルト値NULLが入ります。
INSERT INTO films (code, title, did, date_prod, kind) VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
3 つ目の例では、エントリを指定せずに日付列に DEFAULT 値を指定します。
INSERT INTO films VALUES ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute'); INSERT INTO films (code, title, did, date_prod, kind) VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');
テーブル distributors に、単一行を挿入します。 ここで 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,'{{,,},{,,},{,,}}');