データの作成

データの格納

テーブルにデータを格納するにはINSERTコマンドを使用します。

INSERT INTO テーブル名 VALUES(データ, ……)

データは、テーブルで定義されている順に記述して下さい。数値はそのままの記述でいいですが文字列、日付型はシングルクオーテーションで囲みます。また、年月日の区切りはハイフン(-)を使用します。

それでは、実際にデータを格納してみましょう。

test_db=> INSERT INTO music VALUES(1234, '青年時代', '尾上洪水', 1500, '2017-10-15');
INSERT 0 1

データを確認するには。SELECTコマンドを使用します。
※SELECTコマンドは後ほど詳しく説明します。

test_db=> SELECT * FROM music;
  id  |  title   |  artist  | price | published  
------+----------+----------+-------+------------
 1234 | 青年時代 | 尾上洪水 |  1500 | 2017-10-15
(1 row)

制約に反したデータの格納

musicテーブルには、以下の制約を定義していると思います。

id PRIMARY KEY(重複、NULLを許さない)
title NOT NULL
price CHECK (price > 0)

musicテーブルに、これらの制約に反するデータを格納してみましょう。

test_db=> INSERT INTO music VALUES(NULL, '青年時代', '尾上洪水', NULL, NULL);
ERROR:  null value in column "id" violates not-null constraint
DETAIL:  Failing row contains (null, 青年時代, 尾上洪水, null, null).

格納に失敗して、エラーが表示されます。

SQLのエラー

SQLを実行した際に表示されるエラーは、主に2種類に分類されます。

①構文エラー
SQLの文法上正しくない場合に発生するエラーです。例えば、以下の様な間違ったSQLを入力した場合などです。
test_db=> INSERT music VALUES(1234, '青年時代', '尾上洪水', 1500, '2017-10-15');
ERROR:  syntax error at or near "music"
行 1: INSERT music VALUES(1234, '青年時代', '尾上洪水', 1500, '201...
             ^
②制約エラー
PRIMARY KEYに指定した列にNULLを指定するなど、テーブルの制約を満たさない場合に発生するエラーです。

演習

今後の学習でも使用することを兼ねて、各テーブルに以下のデータを格納しましょう。

musicテーブル

id title artist price published
2222 ほげの季節 ほげ田ほげ作 1200 2012/01/25
3456 hoge you The Hogesters 2000 2010/11/08
4444 地獄のカチューシャ AK-47 1800 2015/05/20
5678 青春フレンド 太郎と次郎 2500 2005/09/01
6666 ネコの肉球 ねこ大佐 3200 2016/03/18
7890 瀬戸の花婿 柳原ルナ子 1400 2000/12/29
8888 六本木神獣 パン・アイス 3600 2018/04/12
test_db=> INSERT INTO music VALUES(2222, 'ほげの季節', 'ほげ田ほげ作', 1200, '2012-01-25');
test_db=> INSERT INTO music VALUES(3456, 'hoge you', 'The Hogesters', 2000, '2010-11-08');
test_db=> INSERT INTO music VALUES(4444, '地獄のカチューシャ代', 'AK-47', 1800, '2015-05-20');
test_db=> INSERT INTO music VALUES(5678, '青春フレンド', '太郎と次郎', 2500, '2005-09-01');
test_db=> INSERT INTO music VALUES(6666, 'ネコの肉球', 'ねこ大佐', 3200, '2016-03-18');
test_db=> INSERT INTO music VALUES(7890, '瀬戸の花婿', '柳原ルナ子', 1400, '2000-12-29');
test_db=> INSERT INTO music VALUES(8888, '六本木神獣', 'パン・アイス', 3600, '2018-04-12');

customerテーブル

id name address
1111 鈴木一郎 東京都渋谷区
2222 山田花子 大阪府大阪市
3333 佐藤二郎 神奈川県横浜市
4444 田中太郎 兵庫県神戸市
test_db=> INSERT INTO customer VALUES(1111, '鈴木一郎', '東京都渋谷区');
test_db=> INSERT INTO customer VALUES(2222, '山田花子', '大阪府大阪市');
test_db=> INSERT INTO customer VALUES(3333, '佐藤二郎', '神奈川県横浜市');
test_db=> INSERT INTO customer VALUES(4444, '田中太郎', '兵庫県神戸市');

customer_idは参照整合性制約が設定されているため、customerテーブルに存在しないIDを挿入しようとするとエラーになりますので注意して下さい。

order_テーブル

id customer_id date
111111 1111 2017/12/23
111112 1111 2017/11/15
222222 2222 2016/12/12
222223 2222 2016/11/29
test_db=> INSERT INTO order_ VALUES(111111, 1111, '2017-12-23');
test_db=> INSERT INTO order_ VALUES(111112, 1111, '2017-11-15');
test_db=> INSERT INTO order_ VALUES(222222, 2222, '2016-12-12');
test_db=> INSERT INTO order_ VALUES(222223, 2222, '2016-11-29');

order_detailテーブル

order_id music_id amount
111111 3456 1
111111 4444 1
111112 5678 1
222222 1234 5
222222 3456 5
222222 6666 5
222223 5678 3
222223 7890 3
test_db=> INSERT INTO order_detail VALUES(111111, 3456, 1);
test_db=> INSERT INTO order_detail VALUES(111111, 4444, 1);
test_db=> INSERT INTO order_detail VALUES(111112, 5678, 1);
test_db=> INSERT INTO order_detail VALUES(222222, 1234, 5);
test_db=> INSERT INTO order_detail VALUES(222222, 3456, 5);
test_db=> INSERT INTO order_detail VALUES(222222, 6666, 5);
test_db=> INSERT INTO order_detail VALUES(222223, 5678, 3);
test_db=> INSERT INTO order_detail VALUES(222223, 7890, 3);

order_idmusic_idは参照整合性制約が設定されているため、対応するテーブルに存在しないIDを挿入しようとするとエラーになりますので注意して下さい。また、このテーブルではorder_idmusic_idの組み合わせでPRIMARY KEYを設定しているので、上記のデータを入れた後で同じorder_idbook_idの組み合わせの行を格納しようとするとエラーになります。

プログラミングの必要性

フェイスブックのザッカーバーグ氏やマイクロソフトのビル・ゲイツ氏などが、プログラミングの必要性について語っています。

おすすめアイテム

「M570」以来、実に7年ぶりのロジクール製トラックボールマウス。プログラミングをするにあたって、一度使うともう元には戻れません!