データベースを操作していると、「登録済みの情報を変更したい」という場面が必ず出てきます。
そんな時に使うのがUPDATE(アップデート)文です。
しかし、使い方を間違えると全てのデータが更新されてしまうこともあるため、正しい書き方と注意点を知っておくことが重要です。
この記事では、SQLのUPDATE文について、基本構文から応用例、失敗しないためのポイントまでをわかりやすく解説します。
UPDATE文ってなに?

UPDATE文の役割
UPDATE文は、テーブル内の既存のデータを更新(書き換え)するためのSQL命令です。
すでに保存されている情報を変更したい時に使います。
基本的な書き方
UPDATE テーブル名 SET カラム名 = 値 WHERE 条件;
実際の使用例
-- id番号1のユーザーのメールアドレスを変更
UPDATE users SET email = 'new@example.com' WHERE id = 1;
構文の意味
- UPDATE:「更新する」という意味
- テーブル名:データを変更したいテーブルの名前
- SET:「〜を設定する」という意味
- カラム名 = 値:どの列にどんな値を入れるか
- WHERE 条件:どのデータを変更するかの条件
最重要ポイント
WHERE句を忘れると、テーブルの全てのデータが変更されてしまいます!
まずは「どのデータをどのように更新するか」を明確にすることが大前提です。
次は、条件指定(WHERE句)の重要性について詳しく見ていきましょう。
WHERE句で更新対象を絞り込もう
WHERE句の重要性
WHERE句を使わないと、テーブル内の全てのレコードが更新されてしまいます。
これを防ぐため、条件は必ず明記しましょう。
基本的な条件指定
-- 特定のidのデータを更新
UPDATE users SET status = 'active' WHERE id = 5;
-- 特定の日付より古い注文のステータスを更新
UPDATE orders SET status = 'shipped' WHERE order_date < '2024-12-31';
-- 特定の条件に合うユーザーのステータスを更新
UPDATE users SET status = 'premium' WHERE points >= 1000;
複数の条件を組み合わせる
-- ANDで複数条件を指定
UPDATE users
SET status = 'inactive'
WHERE last_login < '2024-01-01' AND is_admin = 0;
-- ORで複数条件のいずれかに該当
UPDATE products
SET discount = 10
WHERE category = 'books' OR category = 'electronics';
よく使う条件の例
-- 数値の比較
UPDATE products SET price = 1500 WHERE price > 2000;
-- 文字列の部分一致
UPDATE users SET region = 'Tokyo' WHERE address LIKE '%東京%';
-- NULL値の確認
UPDATE users SET status = 'unknown' WHERE phone IS NULL;
ポイント
- WHERE句は UPDATE の「命綱」
- 条件を複数指定する時は AND や OR を使う
- 更新前に必ず SELECT で対象データを確認する
WHERE句はUPDATEの「命綱」です。次は、複数のカラムを同時に更新する方法を紹介します。
複数のカラムを一度に更新しよう

複数カラム更新の方法
SET句では、カンマ区切りで複数のカラムを同時に更新できます。
実際の使用例
-- 1人のユーザーの名前とメールアドレスを同時に変更
UPDATE users
SET name = '田中一郎', email = 'ichiro@example.com'
WHERE id = 3;
-- 商品の価格と在庫を同時に更新
UPDATE products
SET price = 2980, stock = 50
WHERE product_id = 101;
-- ユーザーの複数の情報を一度に更新
UPDATE users
SET
name = '佐藤花子',
email = 'hanako@example.com',
phone = '090-1234-5678',
updated_at = NOW()
WHERE id = 7;
複数カラム更新のメリット
- 効率的:1回の実行で複数の変更ができる
- データの整合性:関連する情報を同時に更新できる
- パフォーマンス:データベースへの負荷が軽減される
注意点
- カラム名のスペルミスに注意
- 各カラムのデータ型に合った値を指定
- カンマの位置を間違えないように
ポイント
- カラムの順序は自由だが、対応する値に注意
- 関連する情報はまとめて更新すると効率的
- 読みやすくするために改行を活用
一度に多くの項目を変更できることで、作業の効率もアップします。次は、UPDATE前に確認しておくべきポイントについて見てみましょう。
UPDATE実行前に必ず確認しよう
事前確認の重要性
UPDATE文は元に戻すのが難しいため、実行前の確認が非常に重要です。
確認すべきポイント
1. 対象データの件数を確認
-- 更新対象のデータを事前に確認
SELECT * FROM users WHERE id = 1;
-- 対象件数を確認
SELECT COUNT(*) FROM users WHERE status = 'pending';
2. 更新前の値を記録
-- 現在の値を確認・記録
SELECT id, name, email FROM users WHERE id = 1;
-- 問題なければ更新実行
UPDATE users SET email = 'newemail@example.com' WHERE id = 1;
3. バックアップを取る
-- 重要なテーブルの場合はバックアップを作成
CREATE TABLE users_backup AS SELECT * FROM users;
トランザクションを活用した安全な更新
-- トランザクション開始
BEGIN;
-- 更新実行
UPDATE users SET status = 'inactive' WHERE id = 99;
-- 結果を確認
SELECT * FROM users WHERE id = 99;
-- 問題があれば取り消し
ROLLBACK;
-- 問題なければ確定
-- COMMIT;
段階的な更新の例
-- ステップ1:条件に合うデータを確認
SELECT id, name, status FROM users WHERE last_login < '2024-01-01';
-- ステップ2:少数のデータでテスト
UPDATE users SET status = 'inactive' WHERE id = 100;
-- ステップ3:結果を確認
SELECT * FROM users WHERE id = 100;
-- ステップ4:問題なければ全体を更新
UPDATE users SET status = 'inactive' WHERE last_login < '2024-01-01';
ポイント
- 事前の確認を怠らない
- 大量更新の前は必ずテストする
- トランザクションで安全性を確保
事前の確認を怠らないことが、トラブル回避のカギです。最後に、よくあるエラーとその対処法を紹介します。
UPDATEでよくあるエラーと対処法

よくあるエラーパターン
エラー1:カラム名のスペルミス
-- ❌ 間違い:カラム名が間違っている
UPDATE users SET emial = 'test@example.com' WHERE id = 1;
-- Error: Unknown column 'emial'
-- ✅ 正しい:正確なカラム名を使う
UPDATE users SET email = 'test@example.com' WHERE id = 1;
エラー2:WHERE句なしで全行更新
-- ❌ 危険:全てのユーザーのステータスが変わってしまう
UPDATE users SET status = 'inactive';
-- ✅ 正しい:WHERE句で対象を限定
UPDATE users SET status = 'inactive' WHERE last_login < '2024-01-01';
エラー3:データ型の不一致
-- ❌ 間違い:age は数値なのに文字列を指定
UPDATE users SET age = 'twenty-five' WHERE id = 1;
-- Error: Incorrect integer value
-- ✅ 正しい:適切なデータ型で指定
UPDATE users SET age = 25 WHERE id = 1;
エラー4:存在しないデータの更新
-- 存在しないidを指定(エラーにはならないが、何も更新されない)
UPDATE users SET name = '存在しない太郎' WHERE id = 999999;
-- 0 rows affected
エラーを防ぐ対処法
テーブル構造を事前確認
-- テーブルの構造を確認
DESCRIBE users;
-- カラム一覧を確認
SHOW COLUMNS FROM users;
データの存在確認
-- 更新対象が存在するかチェック
SELECT COUNT(*) FROM users WHERE id = 1;
-- 実際のデータを確認
SELECT * FROM users WHERE id = 1;
段階的なテスト
-- 本番環境で実行する前にテスト環境で試す
-- 小規模なデータで動作確認
-- エラーメッセージを必ず読む
デバッグのコツ
- エラーメッセージをよく読む:問題の原因が書かれている
- 少数のデータでテスト:影響範囲を限定してテスト
- 段階的に実行:複雑な更新は段階に分けて実行
ポイント
- 細かなミスでも重大なデータ損失につながる
- 常に慎重に操作する
- 不明な点があれば必ず確認してから実行
細かなミスでも重大なデータ損失につながるため、常に慎重に操作しましょう。
まとめ
SQLのUPDATE文は、データベースの内容を変更する強力な手段です。
覚えるべきポイント
- 基本構文:
UPDATE テーブル名 SET カラム名 = 値 WHERE 条件 - WHERE句は必須:忘れると全データが更新される
- 複数カラム更新:カンマ区切りで同時に複数の値を変更
- 事前確認:必ずSELECTで対象データを確認してから実行
安全に使うための鉄則
- WHERE句を必ず付ける
- 事前にSELECTで確認する
- バックアップを取っておく
- トランザクションを活用する
- テスト環境で試してから本番実行


コメント