MySQLのテーブルに一度に複数の行を挿入することはできる?
はい、MySQLではINSERT文を1回実行するだけで、2つ以上の行(レコード)を同時にテーブルへ挿入することができます。VALUES句の後ろにカンマ区切りで値のセットを並べるだけで、まとめて登録が可能です。
複数行挿入の基本構文
複数の行を一括挿入する際の基本的な書式は以下のとおりです。
insert into yourTableName(yourColumnName1,yourColumnName2) values(yourValue1,yourValue2),(yourValue1,yourValue2),.........N;
このように、values(...) をカンマで区切って必要な数だけ繰り返すことで、任意の件数のレコードを1つのSQL文で挿入できます。
実際に試してみよう
1. テーブルを作成する
まずはサンプル用のテーブルを作成します。
mysql> create table DemoTable811(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100),
StudentAge int
);
Query OK, 0 rows affected (0.54 sec)ここでは、自動採番される StudentId を主キーとし、学生名と年齢を格納するシンプルなテーブルを定義しています。
2. 複数のレコードを一括挿入する
次に、INSERT文を使って5件のレコードを一度に挿入してみましょう。
mysql> insert into DemoTable811(StudentName,StudentAge) values('Chris',21),('Robert',22),('David',20),('Bob',19),('Carol',23);
Query OK, 5 rows affected (0.14 sec)
Records: 5 Duplicates: 0 Warnings: 0実行結果を見ると「Query OK, 5 rows affected」と表示されており、たった1回のINSERT文で5件のレコードが登録されたことがわかります。
3. 挿入結果を確認する
SELECT文ですべてのレコードを表示して確認します。
mysql> select *from DemoTable811;
実行すると以下のような出力が得られます。
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Chris | 21 | | 2 | Robert | 22 | | 3 | David | 20 | | 4 | Bob | 19 | | 5 | Carol | 23 | +-----------+-------------+------------+ 5 rows in set (0.00 sec)
AUTO_INCREMENTによって StudentId には自動的に連番が振られ、5件すべてのデータが正しく登録されていることが確認できました。
まとめ
MySQLでは、VALUES句に値のセットをカンマ区切りで列挙するだけで、1回のINSERT文で複数行を効率的に挿入できます。個別にINSERT文を実行するのに比べて通信回数や処理オーバーヘッドを削減できるため、大量のデータを登録する場面では特に有効な手法です。
-
auto_increment値を指定せずにMySQLテーブルへレコードを挿入する方法
auto_increment値なしでレコード挿入は可能か?はい、可能です。AUTO_INCREMENTが設定されたカラムは、INSERT時に値を明示的に指定しなくても、MySQLが自動的に連番を採番してくれるためです。この記事では、実際にテーブルを作成し、auto_increment値を省略してレコードを挿入する手順を解説します。1. テーブルの作成まず、EmployeeIdカラムにAUTO_INCREMENTとPRIMARY KEYを設定したテーブルを作成します。mysql> create table DemoTable1479 -> ( -> Employ
-
MySQLテーブルにJSONデータを挿入する方法
MySQLでは、JSON型のカラムを作成することで、構造化されたデータをそのまま保存できます。ここでは、JSON型カラムを持つテーブルを作成し、実際にデータを挿入・取得する手順を解説します。 1. JSON型カラムを持つテーブルを作成する まず、JSON型のカラム「ListOfNames」を持つテーブルを作成します。 mysql> create table DemoTable1832 ( ListOfNames JSON ); Query OK,