MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL:単一のINSERTクエリでカンマ区切りの複数レコードをテーブルに一括挿入する方法

MySQLでは、INSERT文を1回実行するだけで、VALUES句にカンマ区切りで値セットを並べることにより、複数のレコードを同時にテーブルへ挿入できます。レコードごとに個別にINSERT文を実行するよりも処理が高速になり、コードも簡潔に保てるため、実務でも広く使われる手法です。

ここでは、サンプルテーブルを作成し、単一のクエリで複数のレコードを挿入する具体的な手順を解説します。

1. テーブルの作成

まず、以下のSQLを実行してテーブルを作成します。ここでは、AUTO_INCREMENTの開始値を1000に設定したMyISAMエンジンのテーブルを定義しています。

mysql> create table if not exists DemoTable1343
-> (
-> `_ClientId` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName varchar(40),
-> ClientProjectDeadline date
-> )ENGINE=MyISAM,AUTO_INCREMENT=1000;
Query OK, 0 rows affected (0.21 sec)

2. 単一クエリで複数レコードを挿入する

次に、INSERTコマンドを使って、1つのクエリで複数のレコードをテーブルに挿入します。ポイントは、VALUES句の後に「(値1, 値2, ...), (値1, 値2, ...)」のように、カンマで区切られた複数の値セットを指定することです。

mysql> insert into DemoTable1343(ClientName,ClientProjectDeadline) values('Chris','2019-09-24'),('Bob','2015-12-09'),
-> ('Mike','2017-01-20'),('Carol','2018-03-31');
Query OK, 4 rows affected (0.10 sec)
Records: 4 Duplicates: 0 Warnings: 0

実行結果を見ると、「4 rows affected」と表示されており、4件のレコードが1回のクエリで正常に挿入されたことがわかります。

3. 挿入結果を確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable1343;

このクエリを実行すると、次のような出力が得られます。

+-----------+------------+-----------------------+
| _ClientId | ClientName | ClientProjectDeadline |
+-----------+------------+-----------------------+|       1001 | Bob     |          2015-12-09 |
|       1002 | Mike    |          2017-01-20 |
|       1003 | Carol   |          2018-03-31 |
+-----------+------------+-----------------------+
4 rows in set (0.00 sec)

出力結果から、テーブル作成時に設定したAUTO_INCREMENTの開始値「1000」から順に_ID_ClientIdが自動採番され、4件のレコードが正しく登録されていることが確認できます。

まとめ

VALUES句にカンマ区切りで複数の行を指定すれば、たった1つのMySQLクエリで効率的にデータを一括挿入できます。大量のデータを登録する場合、クエリの実行回数が減ることでデータベースとの通信オーバーヘッドも抑えられるため、パフォーマンス向上の観点からも非常に有効なテクニックです。ぜひ日常の開発に取り入れてみてください。

  1. MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法

    MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実