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

MySQLのテーブルに1つのINSERT文で複数の値をまとめて挿入する方法

単一のINSERT文で複数の値を挿入するとは

MySQLでは、複数行のデータを登録する際に、INSERT文を行の数だけ実行する必要はありません。VALUES句の後ろにカンマ区切りで値のセットを並べることで、たった1つのINSERT文で複数のレコード(値の配列)を一度に挿入できます。この方法はSQLの実行回数を減らせるため、大量データの登録時にはパフォーマンス面でも有利になります。

それでは、実際の手順を見ていきましょう。

手順1:テーブルを作成する

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable
(
   ClientId int,
   ClientName varchar(50)
);
Query OK, 0 rows affected (0.62 sec)

ここでは、顧客ID(ClientId)と顧客名(ClientName)の2つのカラムを持つ「DemoTable」を作成しました。

手順2:単一のINSERT文で複数のレコードを挿入する

次に、INSERT命令を使ってテーブルにレコードを登録します。ポイントは、値のセット (...) をカンマ(,)で区切って列挙する部分です。これにより、5件分のデータがたった1回のINSERTで挿入されます。

mysql> insert into DemoTable values(101,'Adam'),(102,'Chris'),(103,'Robert'),(104,'Sam'),(105,'Mike');
Query OK, 5 rows affected (0.16 sec)
Records: 5 Duplicates: 0 Warnings: 0

実行結果を見ると「Query OK, 5 rows affected」と表示されており、5件のレコードが正常に登録されたことが確認できます。

手順3:SELECT文で登録内容を確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示しましょう。

mysql> select *from DemoTable;

上記のクエリを実行すると、次のような出力が得られます。

+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 101 | Adam |
| 102 | Chris |
| 103 | Robert |
| 104 | Sam |
| 105 | Mike |
+----------+------------+
5 rows in set (0.00 sec)

まとめ

このように、INSERT文のVALUES句に (値1, 値2), (値1, 値2), ... の形式でカンマ区切りにより複数の行を指定するだけで、1回の実行で任意の数のレコードをMySQLのテーブルへ一括挿入できます。個別にINSERT文を実行するのに比べてコードが簡潔になり、処理速度も向上するため、複数行のデータ追加には積極的に活用しましょう。

  1. Javaを使ってMySQLテーブルにレコードを挿入する方法

    はじめに本記事では、JavaのJDBC(Java Database Connectivity)を使用して、MySQLデータベースのテーブルにレコードを挿入する手順を解説します。まずテーブルを作成し、その後Javaプログラムからデータを登録するまでの一連の流れを見ていきましょう。1. MySQLでテーブルを作成するまず、データを挿入するためのテーブルを作成します。以下はMySQLでテーブルを作成するクエリです。mysql> create table DemoTable(   Id int,   Name varchar(30),&

  2. JavaでMySQLテーブルに1つのカラムのみを挿入する方法

    JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m