MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
生徒
「MySQLでデータを一気にまとめて追加する方法はありますか?1行ずつINSERTするのは大変そうです。」
先生
「ありますよ。MySQLでは複数行INSERTという書き方を使えば、1回のSQLで何件ものデータを追加できます。作業時間の短縮やパフォーマンス向上にもつながります。」
生徒
「パソコン初心者でも理解できますか?SQLって難しそうで…。」
先生
「大丈夫です。紙の名簿にまとめて名前を書き込むイメージで考えれば分かりやすいです。今日はMySQLの複数行INSERTの基本から注意点まで、ゆっくり解説します。」
1. MySQLとINSERT文の基本を理解しよう
MySQLは、データベース管理システムと呼ばれるソフトウェアです。データベースとは、住所録や会員名簿のように、たくさんの情報を整理して保存する箱のようなものです。SQLは、その箱に命令を出すための言葉です。
INSERT文とは、テーブルと呼ばれる表の中に、新しいデータを追加する命令です。例えば、会員管理システムで新しい会員を登録するときに使います。
まずは、基本となる1行のINSERT文を見てみましょう。
id | name | age | email
---+------------+-----+-------------------
(まだデータはありません)
INSERT INTO users (id, name, age, email)
VALUES (1, '山田太郎', 25, 'taro@example.com');
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
このように、1件ずつデータを追加するのが基本のINSERT文です。
2. MySQLで複数行INSERTを行う書き方
MySQLでは、VALUESのあとにカンマ区切りで複数のデータを書くことで、複数行INSERTができます。これは、名簿に何人も一気に書き込むイメージです。
id | name | age | email
---+------------+-----+-------------------
(まだデータはありません)
INSERT INTO users (id, name, age, email)
VALUES
(1, '山田太郎', 25, 'taro@example.com'),
(2, '佐藤花子', 19, 'hanako@example.com'),
(3, '鈴木一郎', 30, 'ichiro@example.com'),
(4, '田中次郎', 22, 'jiro@example.com');
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中次郎 | 22 | jiro@example.com
このように、1回のSQL実行で4件のレコードを登録できました。MySQLの複数行INSERTは、大量データ登録やバッチ処理でもよく使われます。
3. 複数行INSERTのメリットとパフォーマンス向上
MySQLで複数行INSERTを使う最大のメリットは、処理速度の向上です。1行ずつINSERTを何回も実行すると、そのたびにデータベースと通信が発生します。
しかし、複数行INSERTなら、通信回数が減ります。これは、何回も役所に行くのではなく、まとめて書類を提出するようなものです。結果として、パフォーマンスが良くなり、サーバー負荷も軽減されます。
INSERT INTO users (name, age, email)
VALUES
('高橋健', 28, 'ken@example.com'),
('中村優子', 26, 'yuko@example.com');
このように、idがAUTO_INCREMENTの場合は省略できます。AUTO_INCREMENTとは、自動的に番号を振ってくれる仕組みです。
4. INSERT時のエラーと注意点
複数行INSERTには注意点もあります。例えば、主キーと呼ばれる重複してはいけない列に同じ値を入れるとエラーになります。
INSERT INTO users (id, name, age, email)
VALUES
(1, '山本誠', 24, 'makoto@example.com'),
(1, '小林直子', 27, 'naoko@example.com');
この場合、idが重複しているためエラーになります。MySQLでは、1件でもエラーがあると全体が失敗することがあります。
そのため、事前にデータの確認を行うことが大切です。
5. INSERT IGNOREやON DUPLICATE KEY UPDATEの活用
MySQLには、エラーを回避する方法もあります。INSERT IGNOREを使うと、エラーになる行を無視して処理を続けます。
INSERT IGNORE INTO users (id, name, age, email)
VALUES
(1, '山本誠', 24, 'makoto@example.com'),
(5, '小林直子', 27, 'naoko@example.com');
また、ON DUPLICATE KEY UPDATEを使うと、重複時に更新処理へ切り替えられます。
INSERT INTO users (id, name, age, email)
VALUES (2, '佐藤花子', 20, 'hanako_new@example.com')
ON DUPLICATE KEY UPDATE
age = VALUES(age),
email = VALUES(email);
これは、既に存在するデータを上書きしたい場合に便利な書き方です。
6. トランザクションと安全なデータ登録
大量データを扱う場合は、トランザクションも重要です。トランザクションとは、一連の処理をまとめて管理する仕組みです。
START TRANSACTION;
INSERT INTO users (name, age, email)
VALUES
('加藤亮', 31, 'ryo@example.com'),
('松本愛', 29, 'ai@example.com');
COMMIT;
もし途中で問題があれば、ROLLBACKで元に戻すこともできます。これは、書き間違えたら消しゴムで消せる仕組みと考えると分かりやすいです。
MySQLで複数行INSERTを行う方法を理解することで、SQL基礎力が向上し、データベース操作の効率も大きく上がります。初心者の方も、まずは少ない件数で練習しながら、安全にデータを扱う感覚を身につけていきましょう。