以下は、MySQLの INSERT 文の具体例を10個紹介します。
それぞれ異なるパターンです。
準備:テーブル作成(例)
まずはテスト用のテーブルを作っておきます。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
age INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
SQLINSERT 文 10個の例
単一行の挿入
1件のレコードをテーブルに追加する最も基本的な方法です。
指定したカラムに対して、1組の値を挿入します。
INSERT INTO users (name, email, age) VALUES ('山田太郎', 'taro@example.com', 25);SQLすべてのカラムに値を入れる
テーブルの全カラムに対して順番通りに値を挿入します。
特にカラム名を指定しないため、定義順と値の数が一致している必要があります。
INSERT INTO users VALUES (NULL, '鈴木花子', 'hanako@example.com', 30, NOW());SQLNULLを指定
値を入れないカラムには NULL を明示的に挿入できます。
これは「不明」「未設定」などの意味で使用されます。
※NULLを指定できるのは「NULLを許容するカラム」に限られます。
❌ NULLを指定できないカラムの例:name VARCHAR(100) NOT NULL
INSERT INTO users (name, email, age) VALUES ('田中一郎', NULL, NULL);SQL文字列にシングルクォート(’)を含める
文字列内に ‘(シングルクォート)を含む場合は、
バックスラッシュ(\)でエスケープする必要があります。
例:O\’Connor
INSERT INTO users (name, email, age) VALUES ('O\'Connor', 'oc@example.com', 29);SQL特殊文字を含む文字列を挿入(エスケープ処理)
タブ(\t)、バックスラッシュ(\)など、
特殊な文字を含む場合もエスケープして挿入します。
安全に扱うためにも重要です。
INSERT INTO users (name, email, age) VALUES ('山田\t太郎', 'test\\escape@example.com', 33);SQL同時に複数行を挿入
INSERT 文1回で複数の行を一括して挿入できます。
データ量が多いときに効率的で、パフォーマンス向上にもつながります。
INSERT INTO users (name, email, age) VALUES
('佐藤光', 'sato@example.com', 22),
('中村優子', 'nakamura@example.com', 28),
('高橋健', 'takahashi@example.com', 35);SQLサブクエリを使って別テーブルから挿入(例: archived_users → users)
他のテーブル(例:archived_users)からデータを抽出し、
その結果を現在のテーブルに挿入する方法です。
データの移行・バックアップ復元に便利です。
INSERT INTO users (name, email, age)
SELECT name, email, age FROM archived_users WHERE age > 18;SQL重複を無視(IGNORE)
INSERT IGNORE を使うと、重複エラーが発生しても無視され、
処理が中断されずに続行されます。
一部だけ重複しても他の行は挿入されます。
INSERT IGNORE INTO users (id, name, email, age)
VALUES (1, 'Duplicate Test', 'dup@example.com', 40);SQL重複時は更新(ON DUPLICATE KEY UPDATE)
すでに主キーやユニークキーが存在する場合、
挿入ではなくその行を更新するという制御ができます。
「なければ追加、あれば更新」というケースに便利です。
INSERT INTO users (id, name, email, age)
VALUES (1, '上書き太郎', 'update@example.com', 44)
ON DUPLICATE KEY UPDATE name='上書き太郎', age=44;SQLDEFAULT を使って現在のタイムスタンプなどに任せる
DEFAULT を使えば、テーブル定義で指定されたデフォルト値
(例:CURRENT_TIMESTAMP)を自動で利用できます。
特定の値を省略したいときに使います。
INSERT INTO users (name, email, age, created_at)
VALUES ('石井さくら', 'sakura@example.com', 26, DEFAULT);SQL必要であれば、別のテーブルを使った例や、ファイルからの一括挿入(LOAD DATA)なども紹介できます!欲しい用途があれば教えてください。


コメント