これらはデータを変更する DML(Data Manipulation Language)コマンドです。INSERT は行を追加し、UPDATE は既存の行を変更し、 は行を削除します。(読み取りのみの) とは異なり、これらはデータベースを変更するため、特に 句には注意が必要です。
これらはデータを変更する DML(Data Manipulation Language)コマンドです。INSERT は行を追加し、UPDATE は既存の行を変更し、 は行を削除します。(読み取りのみの) とは異なり、これらはデータベースを変更するため、特に 句には注意が必要です。
DELETESELECTWHERE-- insert one row
INSERT INTO users (name, email, age)
VALUES ('Ann', '[email protected]', 30);
-- insert multiple rows at once (efficient)
INSERT INTO users (name, email)
VALUES ('Bob', '[email protected]'), ('Carol', '[email protected]');
-- insert from a query
INSERT INTO archived_users SELECT * FROM users WHERE inactive = true;
列と値を指定します。1つの文で複数行を挿入するほうが、個別の挿入を何度も行うよりも効率的です。
UPDATE users
SET age = 31, updated_at = NOW() -- set one or more columns
WHERE id = 5; -- ❗ WHICH rows to update
-- ❌ DANGER — no WHERE clause updates EVERY row in the table!
UPDATE users SET active = false; -- sets ALL users inactive 😱
重要: WHERE 句のない UPDATE(または DELETE)は、テーブル内のすべての行に影響します。 WHERE を忘れることは壊滅的でよくある間違いです。常に二重チェックしましょう。
DELETE FROM users WHERE id = 5; -- delete a specific row
DELETE FROM users WHERE inactive = true; -- delete matching rows
-- ❌ DANGER — no WHERE deletes the ENTIRE table's contents!
DELETE FROM users;
✓ ALWAYS include a WHERE clause (unless you truly mean to affect all rows)
✓ Test the WHERE first with SELECT (SELECT * WHERE ... → see what you'd affect)
✓ Use TRANSACTIONS (BEGIN ... COMMIT/ROLLBACK) so you can undo mistakes
✓ DELETE vs TRUNCATE: TRUNCATE quickly empties a whole table (faster, but not row-by-row,
can't be rolled back in some DBs, resets auto-increment)
INSERT、UPDATE、DELETE は、アプリケーションがデータを変更する方法です。情報を保存・変更するあらゆるアプリケーション(レコードの作成、編集、削除)にとって基本的なものであり、これらを理解することは SELECT と並ぶ必須の日常知識です。
挿入(単一、複数、またはクエリからの挿入)、更新(列の設定)、行の削除のやり方を知っていることは、すべてのデータ変更操作に必要です。
最も重要な点は、WHERE 句を欠いたときの危険性です。WHERE のない UPDATE や DELETE はテーブル内のすべての行に影響します。これは壊滅的で意外なほどよくある間違いであり、すべてのデータを消去または破損させてしまう可能性があります。
この危険性と、安全のための実践(常に WHERE を含める、まず SELECT で条件をテストする、間違いをロールバックできるようトランザクションを使う)を理解することは、深刻なデータ損失事故を防ぐ重要な知識です。
関連する詳細(効率的な複数行挿入、テーブルを空にする際の DELETE と TRUNCATE の違い)を知っておくことで、実践的な知識が完成します。
データの変更はアプリケーションにとって基本的であり、WHERE 忘れの間違いは壊滅的かつよくある(実際の本番環境でのデータ災害の頻繁な原因)ため、これらの DML コマンド、とりわけ WHERE 句とトランザクションの安全性に関する重要な規律を習得することは、データを変更する SQL を書くすべての人にとって核となる必須知識です。ここでは(取り返しのつかないデータ損失という)リスクの大きさゆえに、安全のための実践は構文と同じくらい重要です。