INSERT

データを詰めるために使うSQLがINSERT。(レコードを挿入する)

新しいテーブルを作成した。

CREATE TABLE ShohinIns
(shohin_id     CHAR(4)      NOT NULL,
 shohin_mei    VARCHAR(100) NOT NULL,
 shohin_bunrui VARCHAR(32)  NOT NULL,
 hanbai_tanka  INTEGER      DEFAULT 0,
 shiire_tanka  INTEGER      ,
 torokubi      DATE         ,
 PRIMARY KEY (shohin_id));
CREATE TABLE

このテーブルにデータを挿入していく。列名や値をカンマで区切って外側をカッコでくくる。これをリストという。

列リスト:(shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, shiire_tanka, torokubi)

値リスト:('0001', 'Tシャツ', '衣類', 1000, 500, '2009-09-20')

INSERT INTO ShohinIns (shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, shiire_tanka, torokubi)
VALUES ('0001', 'Tシャツ', '衣類', 1000, 500, '2009-09-20');
INSERT 0 1

データが入っているか確認する。

postgres=# SELECT *
postgres-# FROM ShohinIns;
 shohin_id | shohin_mei | shohin_bunrui | hanbai_tanka | shiire_tanka |  torokubi  
-----------+------------+---------------+--------------+--------------+------------
 0001      | Tシャツ    | 衣類          |         1000 |          500 | 2009-09-20
(1 row)

テーブル名の後の列リストとVALUES句の値リストは列数が一致している必要がある。またINSERT文は基本的に一回で1行を挿入する。

テーブルの前列に対してINSERTを行う場合は、列リストは省略することができる。このときVALUES句の値が暗黙のうちに左から順に各列に当てられる。

postgres=# INSERT INTO ShohinIns VALUES ('0005', '圧力鍋', 'キッチン用品', 6800, 5000, '2009-01-15');
INSERT 0 1

NULLをしていたいときは、値リストにNULLをそのまま記述する。(NOT NULL制約をつけていない行に限る)

postgres=# INSERT INTO ShohinIns (shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, shiire_tanka, torokubi)
VALUES ('0006', 'フォーク', 'キッチン用品', 500, NULL, '2009-09-20');
INSERT 0 1