本文へスキップ
BecomeCoder

SQL データ操作 (DML)コース · 第4章 データを変える · レッスン16

UPDATE ― 行を書き換える

ブラウザで完結

導入

すでに登録されている行の値を変えたいとき――引っ越しで都市が変わった、価格を改定したい――に使うのが UPDATE です。CRUD の Update にあたります。

説明

UPDATE テーブル SET 列 = 新しい値 で「どの列をどう変えるか」を指定し、WHERE で「どの行を変えるか」を指定します。

UPDATE users SET city = '横浜' WHERE id = 1;

これで id = 1 の会員の city だけが「横浜」に変わります。複数の列を同時に変えるときは、カンマで区切ります。

UPDATE users SET age = 29, city = '京都' WHERE id = 3;

いまの値をもとに計算して更新することもできます。たとえば「モニターの価格を10%引きにする」なら次のようになります。

UPDATE products SET price = price * 0.9 WHERE name = 'モニター';

⚠ WHERE の付け忘れに注意。 WHERE を書かないと、テーブルの全行が書き換わります。

flowchart TB
    G["UPDATE users SET city='東京' WHERE id=1<br/>→ 1行だけ変わる(安全)"]
    B["UPDATE users SET city='東京'<br/>(WHERE なし)→ 全員が東京に!(事故)"]

UPDATE users SET city = '東京'; は全員が東京になってしまいます。更新の前に、同じ WHERESELECT して「対象がその行だけか」を確かめる習慣が安全です。

やってみよう

初期表示の UPDATE を実行して佐藤さん(id=1)を横浜に変え、SELECT id, name, city FROM users; で反映を確認しましょう。壊しても「DBを初期状態に戻す」で元に戻せます。

演習

users テーブルで、高橋さん(id=3)の年齢(age)を 23 に更新してください。

ヒント1を見る

変える列は SET age = 23、対象の行は WHERE id = 3 で指定します。

ヒント2を見る

UPDATE users SET age = 23 WHERE id = 3;

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。