雑学1472809 views
数学講師2859838 views
中学理科1627252 views
中学社会667376 views
高校倫理1434489 views
小学算数1196248 views
英語608929 views
MathPython492661 views
いろは2991619 views
LaTeX958047 views

UPDATE でデータを更新する

テーブルの既存データを更新するには UPDATE 文を使います。

基本構文

UPDATE テーブル名 SET カラム名 =WHERE 条件;

たとえば users テーブルで、id が 1 のユーザーの年齢を 30 に更新するには、こう書きます。

UPDATE users SET age = 30 WHERE id = 1;

WHERE を忘れると全行が更新される

UPDATE 文で WHERE を省略すると、テーブルのすべての行が更新されてしまいます。

-- 危険!全員の年齢が 30 になる
UPDATE users SET age = 30;

これは非常に危険です。UPDATE を実行する前に、WHERE 条件が正しいか必ず確認してください。本番環境では特に注意が必要です。

WHERE あり

条件に合う行だけが更新される

WHERE なし

全行が更新される(危険)

複数のカラムを更新する

カンマで区切ると、複数のカラムを一度に更新できます。

UPDATE users SET name = '田中太郎', age = 31 WHERE id = 1;

計算式を使う

現在の値を元に計算することもできます。

-- 年齢を 1 増やす
UPDATE users SET age = age + 1 WHERE id = 1;

-- 全員の年齢を 1 増やす
UPDATE users SET age = age + 1;

NULL を設定する

値を NULL にしたい場合は、そのまま NULL と書きます。

UPDATE users SET email = NULL WHERE id = 1;

NOT NULL 制約があるカラムには NULL を設定できません。

LIMIT と組み合わせる

UPDATE に LIMIT をつけると、更新する行数を制限できます。

-- 最初の 10 件だけ更新
UPDATE users SET status = 'inactive' WHERE last_login < '2024-01-01' LIMIT 10;

大量のデータを更新するとき、少しずつ処理したい場合に使えます。

更新前に確認する

UPDATE を実行する前に、SELECT で対象の行を確認しておくと安心です。

-- まず対象を確認
SELECT * FROM users WHERE id = 1;

-- 問題なければ更新
UPDATE users SET age = 30 WHERE id = 1;

WHERE 条件が同じなので、SELECT で確認した行だけが更新されます。本番で UPDATE を実行するときの習慣にしておくとよいでしょう。