SQLのINSERT文を完全ガイド!初心者でもわかるデータの追加方法
新人
「データベースに新しい情報を追加するにはどうしたらいいですか?」
先輩
「データを追加するには、SQLのINSERT文を使うよ。」
新人
「INSERT文って何ですか?」
先輩
「INSERT文を使うと、データベースのテーブルに新しいデータを追加できるんだ。まずは、使用するテーブルを確認してみよう!」
1. 今回使用するテーブルデータ
今回のSQLの解説では、社員情報を管理するemployeeテーブルを使用します。このテーブルには、社員のid、name、age、department、salaryの情報が格納されています。
| id | name | age | department | salary |
|---|---|---|---|---|
| 1 | 田中 太郎 | 30 | 営業 | 5000000 |
| 2 | 佐藤 花子 | 25 | マーケティング | 4200000 |
| 3 | 鈴木 一郎 | 35 | 開発 | 6000000 |
| 4 | 高橋 直子 | 28 | 人事 | 4800000 |
| 5 | 山本 健太 | 40 | 経理 | 5500000 |
2. INSERT文の基本
SQLのINSERT文を使うと、新しいデータをテーブルに追加できます。基本の構文は次のようになります。
INSERT INTO employee (id, name, age, department, salary)
VALUES (6, '中村 健', 32, '営業', 5100000);
このSQL文は、employeeテーブルに新しい社員を追加します。各要素の意味は次の通りです。
INSERT INTO employee:employeeテーブルにデータを追加する。(id, name, age, department, salary): 追加するデータのカラムを指定。VALUES (6, '中村 健', 32, '営業', 5100000): 実際に追加するデータ。
このSQLを実行すると、データが追加され、テーブルの内容は以下のようになります。
| id | name | age | department | salary |
|---|---|---|---|---|
| 1 | 田中 太郎 | 30 | 営業 | 5000000 |
| 2 | 佐藤 花子 | 25 | マーケティング | 4200000 |
| 3 | 鈴木 一郎 | 35 | 開発 | 6000000 |
| 4 | 高橋 直子 | 28 | 人事 | 4800000 |
| 5 | 山本 健太 | 40 | 経理 | 5500000 |
| 6 | 中村 健 | 32 | 営業 | 5100000 |
このように、INSERT文を使うことで、新しいデータを簡単に追加できます。
3. 複数のデータを一度に追加する方法(複数行INSERT)
一度に複数のデータを追加したい場合は、INSERT文のVALUES句でカンマ区切りで複数の値を指定できます。
INSERT INTO employee (id, name, age, department, salary)
VALUES
(7, '井上 太一', 29, '開発', 5500000),
(8, '松本 由美', 27, '営業', 4800000),
(9, '藤田 翔', 33, 'マーケティング', 5100000);
このSQLを実行すると、employeeテーブルに3件のデータが一度に追加されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 1 | 田中 太郎 | 30 | 営業 | 5000000 |
| 2 | 佐藤 花子 | 25 | マーケティング | 4200000 |
| 3 | 鈴木 一郎 | 35 | 開発 | 6000000 |
| 4 | 高橋 直子 | 28 | 人事 | 4800000 |
| 5 | 山本 健太 | 40 | 経理 | 5500000 |
| 6 | 中村 健 | 32 | 営業 | 5100000 |
| 7 | 井上 太一 | 29 | 開発 | 5500000 |
| 8 | 松本 由美 | 27 | 営業 | 4800000 |
| 9 | 藤田 翔 | 33 | マーケティング | 5100000 |
このように、INSERT文を使って一度に複数のデータを追加することができます。
4. 指定したカラムのみデータを追加する方法
全てのカラムに値を指定しない場合、特定のカラムだけを指定してデータを追加することができます。
INSERT INTO employee (name, age, department)
VALUES ('吉田 健', 26, '開発');
このSQL文では、idとsalaryのカラムを指定していません。idはAUTO_INCREMENT(自動採番)が設定されている場合は自動で番号が振られます。
このSQLを実行すると、以下のようにデータが追加されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 10 | 吉田 健 | 26 | 開発 | NULL |
このように、指定していないカラムの値はNULLが設定されます(デフォルト値がある場合は、その値が適用されます)。
5. デフォルト値を利用したINSERT
テーブルのカラムにデフォルト値が設定されている場合、DEFAULTキーワードを使ってデフォルト値を適用できます。
INSERT INTO employee (name, age, department, salary)
VALUES ('田村 美咲', 31, '営業', DEFAULT);
このSQLでは、salaryにDEFAULTを指定しているため、テーブルで設定されたデフォルト値が適用されます。
このSQLを実行すると、以下のような結果になります。
| id | name | age | department | salary |
|---|---|---|---|---|
| 11 | 田村 美咲 | 31 | 営業 | 5000000 |
このように、デフォルト値を活用すると、あらかじめ設定された値を自動的に適用できます。
6. よくあるエラーと対策
初心者がINSERT文を使う際に、よく発生するエラーとその対策を紹介します。
1. 指定していないカラムにNULL制約がある
データを追加する際に、必須のカラムを省略するとエラーになります。
INSERT INTO employee (name, age) VALUES ('山田 一郎', 29);
エラー内容: ERROR: Column 'department' cannot be null
対策: departmentカラムに値を指定するか、デフォルト値を設定する。
INSERT INTO employee (name, age, department) VALUES ('山田 一郎', 29, '営業');
2. IDの重複エラー
主キー(idカラム)が重複するとエラーになります。
INSERT INTO employee (id, name, age, department) VALUES (1, '佐々木 花子', 27, '人事');
エラー内容: ERROR: Duplicate entry '1' for key 'PRIMARY'
対策: idを手動で指定せず、AUTO_INCREMENTを利用する。
7. AUTO_INCREMENTの利用
idの値を自動で増加させたい場合は、AUTO_INCREMENTを利用します。
CREATE TABLE employee (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT,
department VARCHAR(50),
salary INT DEFAULT 5000000
);
このようにidカラムにAUTO_INCREMENTを設定すると、新しいデータを追加するたびに自動で番号が増えます。
INSERT INTO employee (name, age, department) VALUES ('佐々木 花子', 27, '人事');
このSQLを実行すると、idは自動的に採番され、次のようなデータが追加されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 12 | 佐々木 花子 | 27 | 人事 | 5000000 |
AUTO_INCREMENTを使うことで、idを明示的に指定せずにデータを追加できます。
8. INSERT文とSELECT文を組み合わせたINSERT(INSERT INTO SELECT)
既存のデータをコピーして新しいレコードとして挿入するには、INSERT INTO ... SELECTを使用します。
INSERT INTO employee (name, age, department, salary)
SELECT name, age, department, salary FROM employee WHERE id = 1;
このSQLを実行すると、id=1のデータをコピーし、新しいIDで追加されます。
| id | name | age | department | salary |
|---|---|---|---|---|
| 13 | 田中 太郎 | 30 | 営業 | 5000000 |
このように、既存のデータをもとにして新しいデータを追加することができます。
まとめ
本記事では、SQLのINSERT文について、初心者でも理解しやすいように基本構文から応用的な使い方までを体系的に解説してきました。SQLのINSERT文は、データベースに新しいレコードを追加するための最も基本かつ重要なSQL構文の一つです。業務システム、Webアプリケーション、業務ツール、社内管理システムなど、あらゆる場面でデータ追加処理は欠かせません。そのため、INSERT文を正しく理解することは、SQL初心者や新卒エンジニアにとって必須の知識といえます。
まず、単一行のINSERT文では、INSERT INTO テーブル名 VALUES という基本構文を使い、各カラムに対応した値を指定する方法を学びました。この方法はシンプルで分かりやすい反面、カラムの順番を間違えると意図しないデータが登録されてしまうリスクがあります。そのため、実務ではカラム名を明示的に指定するINSERT文が推奨されるケースが多いことも理解できたはずです。
次に、複数行INSERTについて解説しました。一度のSQL実行で複数のレコードを追加できるため、データ移行や初期データ登録、テストデータ投入などで非常に役立ちます。SQLのパフォーマンス面でも有利になることが多く、効率的なデータ登録方法として覚えておくと実務で大いに活躍します。
また、指定したカラムのみを対象にINSERTする方法では、AUTO_INCREMENTやデフォルト値の仕組みを理解しました。IDを自動採番に任せることで、主キーの重複エラーを防ぎ、安全にデータを追加できます。DEFAULTキーワードを使えば、あらかじめ設定された初期値を活用でき、SQL文を簡潔に書ける点も重要なポイントです。
よくあるエラーと対策の章では、NULL制約や主キー重複といった初心者がつまずきやすいポイントを確認しました。エラー内容を正しく読み取り、原因を理解することで、SQLに対する苦手意識を減らし、トラブル対応力を高めることができます。これは実務経験を積むうえで非常に重要なスキルです。
さらに、INSERT INTO SELECTを使った応用的なINSERT文では、既存データを元に新しいデータを作成する方法を学びました。これはバックアップ作成やデータ複製、履歴管理など、実務で頻繁に使われるテクニックです。単なるデータ追加だけでなく、データ操作の幅を広げるSQL構文として理解しておきましょう。
以下は、これまで学んだ内容を踏まえたINSERT文の総合的なサンプルです。基本構文、AUTO_INCREMENT、DEFAULTを意識した実践的な例となっています。
INSERT INTO employee (name, age, department, salary)
VALUES
('小林 恒一', 34, '開発', DEFAULT),
('石井 真由', 24, '営業', 4500000);
このように、SQLのINSERT文は基本を押さえれば柔軟かつ安全にデータを追加できます。検索エンジン対策の観点でも、「SQL INSERT 文」「INSERT INTO 使い方」「SQL データ 追加 方法」「AUTO_INCREMENT INSERT」「複数行 INSERT SQL」といったキーワードは検索需要が高く、初心者向け解説記事として非常に有効です。今回の記事を通じて、SQLの基礎力をしっかり身につけ、実務や学習に活かしていきましょう。
新卒エンジニア
「INSERT文って、最初はただデータを入れるだけのSQLだと思っていましたが、こんなに奥が深いんですね。」
先輩社員
「そうだね。SQLのINSERT文は基本だけど、AUTO_INCREMENTやDEFAULT、INSERT INTO SELECTまで理解すると、一気に実務レベルになるよ。」
新卒エンジニア
「特にIDの重複エラーやNULL制約の話は、実際にやらかしそうだなと思いました。」
先輩社員
「誰でも一度は通る道だよ。だからこそ、エラーの意味と対策を理解しておくことが大事なんだ。」
新卒エンジニア
「INSERT INTO SELECTも便利ですね。既存データをコピーできるのは知りませんでした。」
先輩社員
「実務ではよく使うから、覚えておくと評価も上がるよ。まずはINSERT文を自信を持って書けるようになろう。」
新卒エンジニア
「はい!SQLのINSERT文はもう怖くないです。しっかり復習して身につけます!」