MySQLの1つのINSERT文で複数行をまとめて挿入する方法
はじめに
MySQLでは、INSERT文を何度も実行しなくても、1つのクエリで複数の行(レコード)を一度に挿入することができます。VALUES句の後にカンマ区切りで複数の値セットを記述するだけで、効率よくデータを登録できるため、大量の初期データ投入などで非常に便利です。
この記事では、実際のSQL例を使いながら、複数行を一括挿入する手順をわかりやすく解説します。
1. テーブルを作成する
まず、サンプル用のテーブルを作成します。StudentIdはAUTO_INCREMENT付きの主キーとして定義し、レコード追加時に自動的に連番が採番されるようにしています。
mysql> create table DemoTable1384
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentAge int
-> );
Query OK, 0 rows affected (0.63 sec)2. 1つのINSERT文で複数のレコードを挿入する
次に、insertコマンドを使ってテーブルにレコードを挿入します。ここでのポイントは、VALUES句の後に「(値1, 値2), (値1, 値2) ...」という形式でカンマ区切りにして複数行を指定することです。これにより、たった1回のクエリ実行で4件分のデータが登録されます。
mysql> insert into DemoTable1384(StudentName,StudentAge) values('Chris Brown',21),('David Miller',22),
-> ('Carol Taylor',19),('Adam Smith',23);
Query OK, 4 rows affected (0.11 sec)
Records: 4 Duplicates: 0 Warnings: 0実行結果を見ると「4 rows affected」と表示されており、4件のレコードが正常に挿入されたことが確認できます。
3. 挿入したデータを確認する
select文を実行して、テーブル内のすべてのレコードを表示しましょう。
mysql> select * from DemoTable1384;
上記のクエリを実行すると、次のような出力が得られます。
+-----------+--------------+------------+ | StudentId | StudentName | StudentAge | +-----------+--------------+------------+ | 1 | Chris Brown | 21 | | 2 | David Miller | 22 | | 3 | Carol Taylor | 19 | | 4 | Adam Smith | 23 | +-----------+--------------+------------+ 4 rows in set (0.00 sec)
AUTO_INCREMENTによってStudentIdに自動的に1〜4の連番が割り当てられていることも確認できますね。
まとめ
このように、INSERT文のVALUES句にカンマ区切りで複数の値セットを並べるだけで、1つのクエリで複数行を簡単に挿入できます。個別にINSERT文を実行する方法と比べて、通信回数や処理オーバーヘッドが減りパフォーマンスが向上するというメリットがあります。バルクインサートと呼ばれるこの手法は、実務でも頻繁に活用されるので、ぜひ覚えておきましょう。
-
MySQLで複数のレコードをすばやく一括挿入するクエリの書き方
MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実