MySQLのINSERTでデータ追加時に多用する5パターン

MySQLのINSERTでデータ追加時に多用する5パターン

 

★悩み★
・MySQLに新しいデータ(レコード)を追加する方法は?
・データ追加時に多用するINSERTのパターンを知りたい。
・そもそもMySQLのINSERTとは何?基本的な構文は?



こういった「悩み」に答えます。
 

★本記事の内容★
➀ MySQLのINSERTとは?
➁ INSERTを使ってMySQLのデータを追加する方法
➂ 知っておくと便利なINSERT事例集



これからご紹介する「MySQLのINSERTでデータ追加時に多用する5パターン」を実践したことで、筆者は15分以内でINSERTを用いてMySQLにデータを追加できました。
 

記事の前半では「INSERTとは?」や「MySQLで使うINSERTの基本的な構文」に関して解説します。

記事の後半では「MySQLでよく使うINSERTの5パターン」と「知っておくと便利なINSERT事例集」を構文と実行例を用いて紹介します。
 

この記事を読み終えることで、「INSERTを用いてMySQLにデータを新規追加できる」状態になります。
 

★MySQLとは★
MySQLは、Oracle社が開発しているオープンソースのデータベース管理システムです。MySQLは、YoutubeやWikipediaなどの大規模なサービスに利用されています。

参照:MySQLとは(MySQLの公式サイト)


 

ちなみに、「MySQLで追加したデータ(レコード)を更新する方法」を知りたい方は、以下の記事をご覧ください。
 


 

【PR】この記事には広告を含む場合があります

MySQLのINSERTとは?

MySQLのINSERTとは?


「MySQLのINSERTとは?」に関してご紹介します。
 

★MySQLのINSERT関連の情報★
・INSERTとは?(MySQLにデータ追加するためのコマンド)
・MySQLで使うINSERTの基本的な構文



以降で、上記「MySQLのINSERT関連の情報」の各項目に関してご説明します。
 

INSERTとは?(MySQLにデータ追加するためのコマンド)

「INSERTとは?(MySQLにデータ追加するためのコマンド)」に関して解説します。
 

MySQLでよく使うコマンドの1つとして、「INSERT」があります。



MySQLで「INSERT」を使うことで、以下のデータ追加を実現できます。
 

★MySQLでINSERTを使い実現できること★
・MySQLの指定テーブルにデータを追加
・指定テーブルに一度に複数データを追加
・現在時刻をデータとして追加
・他テーブルにあるデータの一部を指定したテーブルに追加
・NULL値をデータとして挿入



上記のように「MySQLのデータ(レコード)を追加したい」という場合は、「INSERT」を使います。
 

以上が、「INSERTとは?(MySQLにデータ追加するためのコマンド)」となります。
 

MySQLで使うINSERTの基本的な構文

「MySQLで使うINSERTの基本的な構文」に関して解説します。
 

MySQLにおける「INSERT」の基本的な書き方に関して説明しますね。 



MySQLでデータ追加をする際に利用する「INSERT」の構文は、以下となります。
 

★MySQLにおけるINSERTのリファレンス★
・機能
 指定したテーブルにデータを追加する
・使い方
 INSERT INTO テーブル名 (カラム名1, …) VALUES (カラム1の値, …);
・例
 INSERT INTO user (id,name,address) values(2,’tom’,’america’);
・実行結果
 userテーブルに「2, ‘tom’, ‘america’」というデータを追加する
・参照
 INSERTのリファレンス(MySQL公式サイト)



MySQLにおいて複数データを一度に追加するなどのINSERTの構文に関しては、本記事の後半で解説します。
 

以上が、「MySQLで使うINSERTの基本的な構文」となります。
 

MySQLのテーブルにデータ(レコード)を追加したい場合、「INSERT」を使いましょう。


 

INSERTを使ってMySQLのデータを追加する方法

INSERTを使ってMySQLのデータを追加する方法


「INSERTを使ってMySQLのデータを追加する方法」に関してご紹介します。
 

★MySQLでのINSERTの使い方:データ追加時に多用する4パターン★
・一度に複数データを追加
・省略したINSERTでデータ追加
・SETを使ったINSERTでデータ追加
・他テーブルからSELECTしたデータを追加



MySQLにデータを追加する場合、上記4パターンのINSERTを多用します。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年6月16日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「MySQLでのINSERTの使い方:データ追加時に多用する4パターン」の各項目に関してご説明します。
 

以降では、MySQL内にテーブルを作成した前提で、各INSERTのパターンをご紹介します。
MySQLのインストール/セットアップ/テーブル作成をされていない方には、以下の記事がオススメです。

>> MySQLのインストール/セットアップ/テーブル作成する手順


 

一度に複数データを追加

「一度に複数データを追加」に関してご説明します。
 

INSERTを使えば、MySQLの指定したテーブルに一度で複数データ(レコード)を追加できます。



MySQLの指定テーブルに「一度に複数データ追加」したい場合のINSERTの構文は、以下となります。
 

★INSERTの構文:MySQLで一度に複数データを追加したい場合★
・使い方
 INSERT INTO テーブル名 (カラム名1, …) VALUES (カラム1の値, …), … ;
・例
 INSERT INTO user VALUES(3,’bob’,’america’), (4,’ken’,’japan’);
・実行結果
 userテーブルに「3,’bob’,’america’」と「4,’ken’,’japan’」を追加する



それでは、MySQLの指定テーブルに複数データを一度で追加するために、以下のINSERTを実行してみましょう。
 

mysql> INSERT INTO user VALUES(3,'bob','america'), (4,'ken','japan');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+------+-----------+
| id   | name | address   |
+------+------+-----------+
|    1 | hero | kakedashi |
|    2 | tom  | america   |
|    3 | bob  | america   |
|    4 | ken  | japan     |
+------+------+-----------+
4 rows in set (0.00 sec)

mysql> 



コマンド実行後、「bob」と「ken」が表示された場合、「正常にINSERTでMySQLに複数データを一度に追加できた」と判断できます。
 

以上が、「一度に複数データを追加」となります。
 

省略したINSERTでデータ追加

「省略したINSERTでデータ追加」に関して解説します。
 

データ追加する際に利用するINSERTって長いですよね。
実は、MySQLのINSERTには省略形があります。



MySQLにおける「記述を省略したINSERT」の構文は、以下となります。
 

★省略したINSERTの構文★
・使い方
 INSERT INTO テーブル名 VALUES (カラム1の値, カラム2の値, …) ;
・例
 INSERT INTO user VALUES(2,’tom’,’america’);
・実行結果
 userテーブルに「2,’tom’,’america’」のデータを追加する



それでは、省略したINSERTを使って、MySQLの指定テーブルにデータを追加してみましょう。
 

mysql> INSERT INTO user VALUES(2,'tom','america');
Query OK, 1 row affected (0.01 sec)

mysql> select * from user;
+------+------+-----------+
| id   | name | address   |
+------+------+-----------+
|    2 | tom  | america   |
+------+------+-----------+
1 row in set (0.00 sec)

mysql> 



コマンド実行後、「tom」が表示された場合、「正常に省略したINSERTでMySQLにデータを追加できた」と判断できます。
 

以上が、「省略したINSERTでデータ追加」となります。
 

SETを使ったINSERTでデータ追加

「SETを使ったINSERTでデータ追加」に関して解説します。
 

MySQLにデータ追加する場合、SETを用いたINSERTでも実現できます。



MySQLにおいて「SETを使ったINSERT」の構文は、以下となります。
 

★SETを使ったINSERTの構文★
・使い方
 INSERT INTO テーブル名 SET カラム1の名前 = カラム1の値, ……;
・例
 INSERT INTO user SET id = 3, name = ‘ken’, address = ‘japan’;
・実行結果
 userテーブルに「3,’ken,’japan’」のデータを追加する



それでは、省略したINSERTを使って、MySQLの指定テーブルにデータを追加してみましょう。
 

mysql> select * from user;
+------+------+---------+
| id   | name | address |
+------+------+---------+
|    1 | hero | japan   |
|    2 | bob  | america |
+------+------+---------+
2 rows in set (0.00 sec)

mysql> INSERT INTO user SET id = 3, name = 'ken', address = 'japan';
Query OK, 1 row affected (0.00 sec)

mysql> select * from user;
+------+------+---------+
| id   | name | address |
+------+------+---------+
|    1 | hero | japan   |
|    2 | bob  | america |
|    3 | ken  | japan   |
+------+------+---------+
3 rows in set (0.00 sec)

mysql>



コマンド実行後、「ken」が表示された場合、「正常にSETを使ったINSERTでMySQLにデータを追加できた」と判断できます。
 

以上が、「SETを使ったINSERTでデータ追加」となります。
 

他テーブルからSELECTしたデータを追加

「他テーブルからSELECTしたデータを追加」に関して解説します。
 

他テーブルに登録されたデータを指定したテーブルに追加したい場合、INSERTを使います。



MySQLにおいて、「他テーブルに登録されたデータを指定したテーブルに追加」する場合のINSERTの構文は、以下となります。
 

★INSERTの構文:他テーブルに登録されたデータを追加したい場合★
・使い方
 INSERT INTO テーブル名1 (カラム名1, …, ) SELECT * from テーブル名2;
・例
 INSERT INTO user2 (id,name,address) SELECT * from user;
・実行結果
 user2テーブルにuserテーブルの全データを追加する



それでは、INSERTを使って、他テーブルに登録されたデータを追加してみましょう。
 

mysql> create table user2 (id int, name varchar(10), address varchar(10));
Query OK, 0 rows affected (0.01 sec)

mysql> select * from user;
+------+------+---------+
| id   | name | address |
+------+------+---------+
|    1 | hero | japan   |
|    2 | bob  | america |
|    3 | ken  | japan   |
+------+------+---------+
3 rows in set (0.00 sec)

mysql> select * from user2;
Empty set (0.00 sec)

mysql> INSERT INTO user2 (id,name,address) SELECT * from user;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from user2;
+------+------+---------+
| id   | name | address |
+------+------+---------+
|    1 | hero | japan   |
|    2 | bob  | america |
|    3 | ken  | japan   |
+------+------+---------+
3 rows in set (0.00 sec)

mysql>



コマンド実行後、「user2テーブルにデータが追加」された場合、「正常にINSERTを使って他テーブルのデータを追加できた」と判断できます。
 

以上が、「他テーブルからSELECTしたデータを追加」となります。
 

以上が、MySQLのデータ追加時に多用するINSERTの5パターンとなります。


 

知っておくと便利なINSERT事例集

知っておくと便利なINSERT事例集


「知っておくと便利なINSERT事例集」に関してご紹介します。
 

★知っておくと便利なINSERT事例集★
・現在時刻を挿入
・追加するデータにNULL値を挿入
・カラムのデフォルト値を用いたデータ追加



MySQLにデータを追加する場合、上記3パターンのINSERTをインターネット上で調べることが何気にあります。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年6月16日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「知っておくと便利なINSERT事例集」の各項目に関してご説明します。
 

現在時刻を挿入

「現在時刻を挿入」に関して解説します。
 

MySQL内でINSERTを使うことで、現在時刻に関するデータを追加できます。



MySQLにおいて、「現在時刻に関するデータ追加する」場合のINSERTの構文は、以下となります。
 

★INSERTの構文:現在時刻に関するデータを追加したい場合★
・使い方
 INSERT INTO テーブル名 VALUES (NOW(), カラム2の値, …) ;
 または
 INSERT INTO テーブル名 VALUES (CURRENT_TIMESTAMP(), カラム2の値,) ;
 または
 INSERT INTO テーブル名 VALUES (LOCALTIME(), カラム2の値, …) ;
 または
 INSERT INTO テーブル名 VALUES (LOCALTIMESTAMP(), カラム2の値, …) ;
・例
 INSERT INTO user3 VALUES (1, ‘ken’, ‘japan’, NOW());
・実行結果
 userテーブルに「1,’ken,’japan’, ‘2022-06-16 07:36:21’」を追加する



それでは、MySQLにおいて「現在時刻に関するデータ追加」をするためのINSERTを実行してみましょう。
 

mysql> create table user3 (id int, name varchar(10), address varchar(10), last_login_time text);
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO user3 VALUES (1, 'ken', 'japan', NOW());
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO user3 VALUES (1, 'ken', 'japan', CURRENT_TIMESTAMP());
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO user3 VALUES (1, 'ken', 'japan', LOCALTIME());
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO user3 VALUES (1, 'ken', 'japan', LOCALTIMESTAMP());
Query OK, 1 row affected (0.00 sec)

mysql> select * from user3;
+------+------+---------+---------------------+
| id   | name | address | last_login_time     |
+------+------+---------+---------------------+
|    1 | ken  | japan   | 2022-06-16 07:36:21 |
|    1 | ken  | japan   | 2022-06-16 07:36:39 |
|    1 | ken  | japan   | 2022-06-16 07:36:48 |
|    1 | ken  | japan   | 2022-06-16 07:36:57 |
+------+------+---------+---------------------+
4 rows in set (0.00 sec)

mysql>



コマンド実行後、「user3テーブルに現在時刻のデータが追加」された場合、「正常にINSERTを使って現在時刻に関するデータを追加できた」と判断できます。
 

以上が、「現在時刻を挿入」となります。
 

追加するデータにNULL値を挿入

「追加するデータにNULL値を挿入」に関して説明します。
 

MySQLにおいて、あるカラムに追加するデータがない場合、INSERTでNULL値を挿入することがあります。



MySQLにおいて、「INSERTを使ってNULL値を挿入」する際のINSERT構文は、以下となります。
 

★INSERTの構文:NULL値を含むデータを追加したい場合★
・使い方
 INSERT INTO テーブル名 VALUES (NULL, カラム2の値, …) ;
 または
 INSERT INTO テーブル名 VALUES (null, カラム2の値, …) ; 
・例
 INSERT INTO user3 VALUES (1, ‘ken’, ‘japan’, NULL);
・実行結果
 userテーブルに「1,’ken,’japan’, NULL」のデータを追加する



それでは、INSERTを使って、NULL値を含むデータを追加してみましょう。
 

mysql> select * from user3;
Empty set (0.00 sec)

mysql> INSERT INTO user3 VALUES (1, 'ken', 'japan', NULL);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO user3 VALUES (2, 'bob', 'america', null);
Query OK, 1 row affected (0.00 sec)

mysql> select * from user3;
+------+------+---------+-----------------+
| id   | name | address | last_login_time |
+------+------+---------+-----------------+
|    1 | ken  | japan   | NULL            |
|    2 | bob  | america | NULL            |
+------+------+---------+-----------------+
2 rows in set (0.01 sec)

mysql>



コマンド実行後、「user3テーブルにNULLのデータが追加」された場合、「正常にINSERTを使ってNULL値を含むデータを追加できた」と判断できます。
 

以上が、「追加するデータにNULL値を挿入」となります。
 

カラムのデフォルト値を用いたデータ追加

「カラムのデフォルト値を用いたデータ追加」に関して解説します。
 

カラムにデフォルト値を設定することで、INSERTでデフォルト値を挿入できるようになります。



MySQLにおいて、「INSERTでデフォルト値を含むデータ追加」する際の構文は、以下となります。
 

★INSERTの構文:デフォルト値を含むデータを追加したい場合★
・使い方
 INSERT INTO テーブル名 VALUES (NULL, カラム2の値, …) ;
 または
 INSERT INTO テーブル名 () VALUES ();
・例1:一部のカラムをデフォルト値にする場合
 INSERT INTO user3 VALUES (2, ‘bob’, ‘america’, default);
・実行結果1
 userテーブルに「2,’bob’,’america’, NULL」のデータを追加する
・例2:全カラムをデフォルト値にする場合
 INSERT INTO user3 () VALUES ();
・実行結果2
 userテーブルに「NULL,NULL,NULL, NULL」のデータを追加する



それでは、INSERTを使って、デフォルト値を含むデータを追加してみましょう。
 

mysql> INSERT INTO user3 () VALUES ();
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO user3 VALUES (2, 'bob', 'america', default);
Query OK, 1 row affected (0.00 sec)

mysql> select * from user3;
+------+------+---------+-----------------+
| id   | name | address | last_login_time |
+------+------+---------+-----------------+
| NULL | NULL | NULL    | NULL            |
|    2 | bob  | america | NULL            |
+------+------+---------+-----------------+
2 rows in set (0.00 sec)

mysql>



コマンド実行後、「user3テーブルにNULLのデータが追加」された場合、「正常にINSERTを使ってデフォルト値を含むデータを追加できた」と判断できます。
 

以上が、「カラムのデフォルト値を用いたデータ追加」となります。
 

INSERTを使うことで「現在時刻の追加」「NULL値のデータ追加」「デフォルト値で挿入」を実現できます。
時たま使うことがあるので、覚えておきましょう。



ちなみに、「MySQLを基礎から体系的に学びたい」や「その他のMySQLのコマンドを知りたい」方は、以下の参考書がオススメです。



動画で学びたい方には、以下をオススメします。

MySQL入門@udemy


 

【まとめ】MySQLのINSERTでデータ追加時に多用する5パターン

【まとめ】MySQLのINSERTでデータ追加時に多用する5パターン


今回の記事を通して、「MySQLのINSERTでデータ追加時に多用する5パターン」をご紹介することで、以下の悩みを解消しました。
 

★悩み★
・MySQLのテーブルに新しいデータを追加する手順や方法を知りたい。
・MySQLでinsertを用いてデータを追加する手順を知りたい。
・MySQLでinsertを用いて複数データを一度に追加はできるのかな。



MySQLでデータを追加する方法は?」や「INSERTの使い方は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント

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