いろは2986023 views
小学算数1194618 views
世界の国560595 views
小学理科717236 views
小学社会308636 views
LaTeX957300 views
高校化学2913383 views
高校物理158224 views
教育148875 views
高校国語785655 views
Help
Tools

English

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 を実行するときの習慣にしておくとよいでしょう。