【SQLシリーズ】INSERT文の使い方と基本構文

SQL

今回は、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の基本知識は必須となるので、必ず身につけておきましょう。

それでは、今回は以上となります。

ではでは😆

コメント

タイトルとURLをコピーしました