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

MySQLで複数の行(レコード)を一括挿入する方法

MySQLでは、INSERT文の「VALUES」句を活用することで、複数の行(レコード)を1つのクエリでまとめて挿入できます。各レコードの値は括弧( )で囲み、そのセット同士をカンマ(,)で区切って記述するのがポイントです。この方法を使えば、個別にINSERT文を実行するよりも通信回数が減り、処理速度やパフォーマンスの面でも大きなメリットがあります。

複数行挿入の基本構文

MySQLで複数の行を挿入する際の基本的な構文は以下の通りです。

INSERT INTO テーブル名(カラム名1, カラム名2, ... カラム名N)
VALUES(値1, 値2, ... 値N),(値1, 値2, ... 値N),(値1, 値2, ... 値N), ...;

サンプルテーブルの作成

まず、動作確認用にテーブルを作成しましょう。

mysql> CREATE TABLE InsertMultipleRowsDemo
-> (
-> Id int,
-> Name varchar(200),
-> Age int
-> );
Query OK, 0 rows affected (0.45 sec)

複数行を挿入するクエリの実行例

上記の構文に従って、5件分のデータを一度に挿入してみます。

mysql> INSERT INTO InsertMultipleRowsDemo(Id,Name,Age) VALUES(1,'John',23),(2,'Carol',24),(3,'Johnson',21),(4,'Smith',20),(5,'David',26);
Query OK, 5 rows affected (0.31 sec)
Records: 5 Duplicates: 0 Warnings: 0

実行結果に「Query OK, 5 rows affected」と表示されていることから、5件のレコードがすべて正常に登録されたことがわかります。

SELECT文で挿入結果を確認する

最後に、SELECT文ですべてのレコードを表示して、正しく挿入できているかを確認します。

mysql> SELECT * FROM InsertMultipleRowsDemo;

以下が出力結果です。

+------+---------+------+
| Id | Name | Age |
+------+---------+------+
| 1 | John | 23 |
| 2 | Carol | 24 |
| 3 | Johnson | 21 |
| 4 | Smith | 20 |
| 5 | David | 26 |
+------+---------+------+
5 rows in set (0.00 sec)

このように、VALUES句の後ろにカンマ区切りで値のセットを並べるだけで、簡単に複数行の一括挿入が実現できます。大量の初期データ投入やテストデータの作成などにも非常に便利なテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで複数のテーブルの行数(COUNT(*))を1つのクエリで取得する方法

    MySQLでは、サブクエリを組み合わせることで、複数のテーブルの行数を1つのクエリで同時に取得できます。基本となる構文は以下の通りです。SELECT (SELECT COUNT(*) FROM テーブル名1) AS エイリアス名1, (SELECT COUNT(*) FROM テーブル名2) AS エイリアス名2 FROM dual;構文のポイント各テーブルに対して COUNT(*) を含むスカラーサブクエリを作成し、それらを SELECT 句の中に並べます。MySQLでは FROM dual を指定することで、実際のテーブルを参照しないままサブクエリを評価できます(なお、My

  2. MySQLで複数のデータベースにまたがるテーブルの総行数を取得する方法

    複数のデータベースに存在する同名テーブルの総行数を取得したい場合は、集計関数 SUM() と INFORMATION_SCHEMA を組み合わせることで実現できます。ここでは、実際にサンプルを作成しながら手順を解説します。 1. 「web」データベースにテーブルを作成する まずは「web」データベース内にテーブルを作成します。以下のコマンドを実行してください。 mysql> create table DemoTable1568 -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.