MariaDB、INSERT文

データベース

以下は、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
);
SQL

INSERT 文 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());
SQL

NULLを指定

値を入れないカラムには 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;
SQL

DEFAULT を使って現在のタイムスタンプなどに任せる

DEFAULT を使えば、テーブル定義で指定されたデフォルト値
(例:CURRENT_TIMESTAMP)を自動で利用できます。
特定の値を省略したいときに使います。

INSERT INTO users (name, email, age, created_at)
VALUES ('石井さくら', 'sakura@example.com', 26, DEFAULT);
SQL

必要であれば、別のテーブルを使った例や、ファイルからの一括挿入(LOAD DATA)なども紹介できます!欲しい用途があれば教えてください。

コメント

タイトルとURLをコピーしました