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

MySQLの1つのクエリで複数行を挿入する方法を解説

はじめに

MySQLでは、INSERT文のVALUES()句をカンマ(,)で区切って並べることで、1つのクエリで複数の行をまとめて挿入できます。この方法を使うと、行ごとに個別のINSERT文を実行する場合と比べて、処理が高速になり、コードもすっきりします。

基本構文

insert into テーブル名 values(値1,値2,...N),(値1,値2,...N),(値1,値2,...N),...N;

このように、values()の中に各行のデータを記述し、複数のvalues()をカンマで連結することで、一度の実行で任意の数の行を挿入できます。

サンプルテーブルの作成

実際に複数行を挿入してみるために、まずテーブルを作成しましょう。以下がテーブル作成用のクエリです。

mysql> create table MultipleRowsInsert
   -> (
   -> UserId int,
   -> UserName varchar(200)
   -> );
Query OK, 0 rows affected (1.21 sec)

ここでは、ユーザーID(UserId)とユーザー名(UserName)の2つのカラムを持つ「MultipleRowsInsert」というテーブルを作成しました。

複数行の挿入を実行する

次に、1つのINSERT文で5件のレコードを同時に挿入します。以下がそのクエリです。

mysql> insert into MultipleRowsInsert values(100,'Bob'),(101,'Smith'),(102,'Carol'),(104,'David'),(105,'Sam');
Query OK, 5 rows affected (0.33 sec)
Records: 5 Duplicates: 0 Warnings: 0

実行結果を見ると、「Query OK, 5 rows affected」と表示されており、5行すべてが正常に挿入されたことがわかります。重複(Duplicates)や警告(Warnings)も発生していません。

挿入結果の確認

SELECT文を使って、テーブル内の全レコードを表示して確認しましょう。

mysql> select *from MultipleRowsInsert;

以下が出力結果です。

+--------+----------+
| UserId | UserName |
+--------+----------+
|    100 | Bob      |
|    101 | Smith    |
|    102 | Carol    |
|    104 | David    |
|    105 | Sam      |
+--------+----------+
5 rows in set (0.00 sec)

まとめ

このように、VALUES()をカンマで区切って記述するだけで、単一のMySQLクエリで複数の行を簡単に挿入できます。大量のデータを登録する際には、個別にINSERT文を実行するよりもパフォーマンス面で大きく有利になるため、ぜひ活用してください。

  1. MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法

    MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;

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

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