今回は、SQLでテーブルにレコードを追加するINSERT文の基本構文から注意点までを説明していきます。
基本構文
INSERT INTO テーブル名 (列名1,列名2,列名3,...) VALUES (値1,値2,値3,...);
列名と値が対応しており、列名1に値1が入ります。
例として、以下のテーブルにデータを一行追加してみます。
+----+--------------+--------+-------+-----------+
| id | name | amount | price | type |
+----+--------------+--------+-------+-----------+
| 1 | きゅうり | 10 | 100 | 野菜 |
| 2 | トマト | 10 | 120 | 野菜 |
| 3 | 芋 | 20 | 150 | 野菜 |
| 4 | レタス | 20 | 110 | 野菜 |
| 5 | 玉ねぎ | 15 | 90 | 野菜 |
| 6 | ぶり | 5 | 500 | 魚介類 |
| 7 | 鮭 | 5 | 400 | 魚介類 |
| 8 | バナナ | 10 | 200 | 果物 |
| 9 | りんご | 10 | 150 | 果物 |
| 10 | ぶどう | 10 | 300 | 果物 |
+----+--------------+--------+-------+-----------+
SQLは以下のようになります。
INSERT INTO materials (id, name, amount, price, type) VALUES (11, 'キャベツ', 20, 100, '野菜');
テーブルは以下のようになります。
+----+--------------+--------+-------+-----------+
| id | name | amount | price | type |
+----+--------------+--------+-------+-----------+
| 1 | きゅうり | 10 | 100 | 野菜 |
| 2 | トマト | 10 | 120 | 野菜 |
| 3 | 芋 | 20 | 150 | 野菜 |
| 4 | レタス | 20 | 110 | 野菜 |
| 5 | 玉ねぎ | 15 | 90 | 野菜 |
| 6 | ぶり | 5 | 500 | 魚介類 |
| 7 | 鮭 | 5 | 400 | 魚介類 |
| 8 | バナナ | 10 | 200 | 果物 |
| 9 | りんご | 10 | 150 | 果物 |
| 10 | ぶどう | 10 | 300 | 果物 |
| 11 | キャベツ | 20 | 100 | 野菜 |
+----+--------------+--------+-------+-----------+
11行目に新たにキャベツのデータが追加されました。
注意点
では、以下のように一部の列を省略するとどうなるでしょうか?
INSERT INTO materials (id, name, amount) VALUES (11, 'キャベツ', 20);
実は、これも実行することはできます。
この場合、省略された列はその列のデフォルトの値が入ります。
上の例の場合ですと、デフォルト値はNULLになってます。
+----+--------------+--------+-------+-----------+
| id | name | amount | price | type |
+----+--------------+--------+-------+-----------+
| 1 | きゅうり | 10 | 100 | 野菜 |
| 2 | トマト | 10 | 120 | 野菜 |
| 3 | 芋 | 20 | 150 | 野菜 |
| 4 | レタス | 20 | 110 | 野菜 |
| 5 | 玉ねぎ | 15 | 90 | 野菜 |
| 6 | ぶり | 5 | 500 | 魚介類 |
| 7 | 鮭 | 5 | 400 | 魚介類 |
| 8 | バナナ | 10 | 200 | 果物 |
| 9 | りんご | 10 | 150 | 果物 |
| 10 | ぶどう | 10 | 300 | 果物 |
| 11 | キャベツ | 20 | NULL | NULL |
+----+--------------+--------+-------+-----------+
ただし、以下のような文はエラーになります。
INSERT INTO materials (id, name, amount, price, type) VALUES (12, 'いちご', 20);
列名の数と対応する値の数が異なるためです。
列名とその値は必ず一致させる必要があります。
これは注意しましょう。
列名を省略
実は、INSERT文では列名を省略して書くこともできます。
INSERT INTO orders VALUES (11,11,"高田",2);
こちらを実行すると、下記のように新しいレコードが追加されます。
+----+-------------+----------+--------------+
| id | material_id | customer | order_amount |
+----+-------------+----------+--------------+
| 1 | 1 | 田中 | 2 |
| 2 | 1 | みき | 2 |
| 3 | 2 | 村田 | 5 |
| 4 | 7 | 吉田 | 1 |
| 5 | 8 | 後藤 | 2 |
| 6 | 8 | 斎藤 | 3 |
| 7 | 8 | 斎藤 | 3 |
| 8 | 9 | 佐藤 | 2 |
| 9 | 10 | 高田 | 2 |
| 11 | 11 | 高田 | 2 |
+----+-------------+----------+--------------+
何も指定したくない場合はNULLを入れれば良いです。
INSERT INTO orders VALUES (11,11,NULL,2);
最後に
いかがでしたでしょうか。
本記事ではSQLのINSERT文の基本的な使い方から注意点などを解説しました。
特に、データベースを触る人はSQLの基本知識は必須となるので、必ず身につけておきましょう。
それでは、今回は以上となります。
ではでは😆
コメント