LINEで現役エンジニアに直接質問してみよう!登録無料

MySQLでテーブルへレコード(データ)を追加する(INSERT INTO)

テーブルにレコードを追加するには「INSERT INTO」コマンドを使います。

mysql> INSERT INTO users (id, email, password) VALUES (1, '[email protected]', '[email protected]');
Query OK,
1 row affected (0.02 sec)

INSERT INTOの基本

下記コマンドでレコードを追加出来ます。

INSERT INTO テーブル名 (カタム名1, カラム名2, カラム名3, ...) VALUES (カラム値1, カラム値2, カラム値3, ...);

INSERT INTOを実行してみる

レコードを追加するには、事前に下記の3操作を実行してテーブルを作成しておく必要があります。

CREATE DATABASE sampleapp_development;
USE sampleapp_development;
CREATE TABLE users (id INT, email VARCHAR(255), password VARCHAR(255));

それでは、テーブルにレコードを追加してみましょう!

下記の表のようなデータを追加してみます。

idemailpassword
1[email protected][email protected]

SQLで書くと、このようになります。

INSERT INTO users (id, email, password) VALUES (1, '[email protected]', '[email protected]');

実際にコマンドを実行して、下記のように「Query OK」が出たら、データが追加出来ています。

mysql> INSERT INTO users (id, email, password) VALUES (1, '[email protected]', '[email protected]');
Query OK,
1 row affected (0.02 sec)

次の章で話す内容ですが、SELECTコマンドを使うと、テーブルのデータを取得出来ます。今回はusersのデータ全件取得してみます。

mysql> SELECT * FROM users;
+------+---------------------+----------+
| id   | email               | password |
+------+---------------------+----------+
|    1 | [email protected] | [email protected] |
+------+---------------------+----------+
1 row in set (0.00 sec)

このように、追加した内容が入っているのが確認出来ます。

ここまでが「INSERT INTO」の基本です。

この後は、複数のデータをまとめて挿入追加する方法や、INSERT INTOの省略形、SETコマンドを使った別の書き方など、深い知識を解説していきます。

データをまとめて複数挿入する方法

実は、先程のINSERT INTOには値を複数書くことが出来ます。

INSERT INTO テーブル名 (カタム名1, カラム名2, カラム名3, ...) VALUES
(カラム値1, カラム値2, カラム値3, ...),
(カラム値1, カラム値2, カラム値3, ...),
(カラム値1, カラム値2, カラム値3, ...);

このようにして、いくつでも書くことができます。

例えば、データを3つ同時に挿入してみます。

INSERT INTO users (id, email, password) VALUES
(2, '[email protected]', '[email protected]'),
(3, '[email protected]', 'hoge'),
(4, '[email protected]', 'fuga');

実行すると、下記のようになります。

mysql> INSERT INTO users (id, email, password) VALUES
    -> (2, '[email protected]', '[email protected]'),
    -> (3, '[email protected]', 'hoge'),
    -> (4, '[email protected]', 'fuga');
Query OK,
3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

MySQLのコンソール上に直接入力するので、->が付いていますが、実際は改行すれば自動的に挿入される記号なので、気にしなくてOKです。

さて、これで3つのレコードが挿入されました。先程使ってSELECTコマンドを使って、データを見てみましょう!

mysql> SELECT * FROM users;
+------+---------------------+----------+
| id   | email               | password |
+------+---------------------+----------+
|    1 | [email protected] | [email protected] |
|    2 | [email protected]  | [email protected] |
|    3 | [email protected]   | hoge     |
|    4 | [email protected]  | fuga     |
+------+---------------------+----------+
4 rows in set (0.01 sec)

このように、合計で4レコードになっているのがわかります。

INSERT INTOコマンドの省略形

INSERT INTOは、一部省略できる部分があります。実際に省略したSQLは下記のようになります。

INSERT INTO users VALUES (1, '[email protected]', '[email protected]');

この例で言うと(id, email, password)の部分を省略できます。但し、VALUES以下の部分はデータの順番をテーブルで作ったカラム順に並べておく必要があります。

また、データの個数も過不足があるとエラーになるので、注意しましょう!

SETコマンドを使った別の書き方

INSERT INTO ... VALUESの他にINSERT INTO ... SETを使ってデータを挿入する方法があります。

INSERT INTO users SET id = 1, email = '[email protected]', password = '[email protected]';

先程のVALUESを使った例だと、カラム数が多くなってくると、どのカラムにどんな値を入れるのか分かりにくくなってきます。

そこで、SETを使うと、カラム名と値を近い位置に書くことができるので、挿入する値が一目瞭然で分かります。

但し、1レコード挿入するごとに1つのSQLが必要なので、処理効率の低さからあまり使われない傾向にあります。

まとめ

  • テーブルにレコードを追加するにはINSERT INTOを使います。
  • データをまとめて複数挿入するには、VALUESの後に連続して値を書きましょう
  • INSERT INTOコマンドには省略形があります
  • SETコマンドを使った別の書き方もあります。

以上、テーブルのレコード追加方法をアキ(@hackablejp)が解説しました!

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。