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文を実行するよりもパフォーマンス面で大きく有利になるため、ぜひ活用してください。
-
MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法
MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実