データを詰めるために使う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