MySQLのSET句を使って複数のレコードを挿入する方法
MySQLのINSERT文におけるSET句とは
MySQLでは、INSERT文にSET句を組み合わせることで、「カラム名=値」の形式でデータを挿入できます。通常のINSERT ... VALUES構文と比べ、どのカラムにどの値を設定しているのかがひと目で分かるため、可読性の高いSQLを書けるのが特徴です。ここでは、実際にテーブルを作成し、SET句を使って複数のレコードを挿入する手順を解説します。
1. テーブルを作成する
まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable1544
-> (
-> Id int ,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (2.47 sec)
Id(整数型)とName(可変長文字列型)の2つのカラムを持つシンプルなテーブルが完成しました。
2. SET句を使ってレコードを挿入する
続いて、INSERT文のSET句を使用してデータを挿入します。SET句は1回の実行で挿入できるのは1行のみですが、INSERT文を繰り返し実行することで、結果として複数のレコードを登録できます。
mysql> insert into DemoTable1544 set Id=101,Name='John Doe';
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1544 set Id=102,Name='Adam Smith';
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1544 set Id=103,Name='Chris Brown';
Query OK, 1 row affected (0.12 sec)
3. 挿入したデータを確認する
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable1544;
実行結果は以下の通りです。
+------+-------------+
| Id | Name |
+------+-------------+
| 101 | John Doe |
| 102 | Adam Smith |
| 103 | Chris Brown |
+------+-------------+
3 rows in set (0.00 sec)
3件のレコードが正しく登録されていることが確認できます。
まとめ
SET句を使えば「カラム名=値」のペアで指定できるため、VALUES構文のようにカラムの並び順を意識する必要がなく、記述ミスによる誤挿入のリスクも軽減できます。ただし、SET句は1回の実行につき1行しか挿入できない点には注意が必要です。大量のデータを一度に挿入したい場合は、従来のINSERT ... VALUES構文で複数行を指定する方が効率的です。用途に応じて両者を使い分けるとよいでしょう。
-
MySQLで複数のレコードをすばやく一括挿入するクエリの書き方
MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル
-
オプション指定によるMySQLプログラム変数の設定方法
多くのMySQLプログラムは、実行時にSETステートメントを使って設定できる内部変数を持っています。実は、これらのプログラム変数の大部分は、サーバー起動時にも、プログラムオプションを指定する場合と同じ構文を使って設定することが可能です。例1:max_allowed_packet変数の設定mysqlクライアントには、通信バッファの最大サイズを制御するmax_allowed_packetという変数が用意されています。この変数を16MBに設定したい場合は、以下のいずれかのコマンドを実行します。mysql --max_allowed_packet=16777216 (または) mysql --max_