FE EXAM

UPDATE文(値の変更)

表の既存レコードの値を変更するSQLの命令。

INTERACTIVE VISUALIZATION
WHERE(対象行)
SET(書き換え)
SQL
UPDATE 社員
SET 部署 = '企画'
WHERE ID = 2
シナリオ
ステップ1 / 5
STEP 1/5元の表を確認する社員表に3行あります。ID=2 の鈴木さんの部署を「開発」から「企画」へ変えたい、という場面です。UPDATE 文は既にある行の値を書き換える命令です。
社員 表
ID名前部署
1佐藤営業
2鈴木開発
3高橋営業
解説

📌
UPDATE文とは

開発変更前SET企画変更後

UPDATE 文とは、表の既存レコードの値を変更する SQL の命令のことです。すでに表に入っている行の中身を、新しい値に書き換えます。

身近な例で考えると、会員名簿で1人の住所だけを書き直す作業に似ています。新しい人を増やすわけでも消すわけでもなく、すでにある記録の一部分を上書きする、というのが UPDATE の役割です。

上のツールで▶ボタンを押すと、WHERE で書き換える対象の行を選び、SET でその行の値だけが新しい値に変わる流れを確認できます。

📐
基本構文

UPDATE 文の基本の形は、書き換える内容を指定する SET と、対象を絞る WHERE でできています。

UPDATE 表 SET 列=値 WHERE 条件

それぞれの役割は次のとおりです。
UPDATE 表:どの表を更新するかを指定する
SET 列=値:どの列をどの値に書き換えるかを指定する(カンマ区切りで複数列もまとめて更新できる)
WHERE 条件:どの行を更新するかを絞り込む

たとえば SET 部署='企画', 役職='主任' のように書けば、部署と役職を同時に更新できます。コンピュータは WHERE で対象行を見つけてから SET の書き換えを行う、という順番で処理します。

🗂️
DMLの中でのUPDATEの立ち位置

DML(データ操作言語)INSERT追加SELECT検索UPDATE変更← 今ここDELETE削除

INSERT・SELECT・UPDATE・DELETE の4つをまとめてDML(=データ操作言語)と呼びます。UPDATE はそのうち「既存の行の値を変える」専用の命令です。

なぜ UPDATE が必要か。INSERT はゼロから新しい行を作るため、「今ある行の中身を直す」ことはできません。電話番号が変わった会員の情報を更新する、商品の在庫数を減らすなど、すでにある行の特定の列の値だけを書き換えたいときに UPDATE を使います。行は消えずそのまま残り、指定した列の値だけが上書きされます。

INSERT との大きな違いはWHERE で対象行を指定する必要がある点です。INSERT は「まだない行を追加する」ので対象を絞る必要はありませんが、UPDATE は「どの行を変えるか」を WHERE で教えなければなりません。WHERE を省くと全行が書き換わるため注意が必要です。

🔄
複数列を同時に更新する

変更前2鈴木営業SET 名前='佐藤', 部署='企画'変更後2佐藤企画IDは変わらない

UPDATE の SET 句では、カンマ区切りで複数の列を1つの命令でまとめて更新できます

UPDATE 社員 SET 名前='佐藤', 部署='企画' WHERE ID=2

なぜ1回にまとめられるのか。コンピュータはこの命令を受け取ると、WHERE で対象行を見つけてから SET に書いた列を一気に書き換えます。同じ行を変えるために UPDATE を2回実行する必要はなく、SET 句に 列=値, 列=値 と並べるだけで済みます。

大切なのは、WHERE で指定した列(ID など)は SET で変えないという点です。主キーの列はデータを一意に(=重複なく)識別するための列なので、UPDATE で書き換えると別のレコードと混同するトラブルのもとになります。「どの行を変えるか」は WHERE で、「何を変えるか」は SET で—と役割を明確に分けて書くことが大切です。

⚠️
WHERE句の重要性

WHERE あり1行だけWHERE なし全行が変わる

UPDATE で最も注意すべきなのが WHERE 句の書き忘れです。WHERE を省略すると、対象が表の全行になります。


WHERE ありWHERE ID = 2 なら ID=2 の行だけが書き換わる
WHERE なしUPDATE 社員 SET 部署='企画' だと全員の部署が企画になってしまう

これは、名簿の1人だけ住所を直すつもりが、全員の住所を同じ値に上書きしてしまうのと同じ事故です。一度書き換えた値は元に戻すのが大変なので、UPDATE を実行する前に「WHERE で対象を正しく絞れているか」を必ず確認することが大切です。同じ理由から、DELETE 文でも WHERE 句がとても重要になります。

練習問題

🎯
基本情報技術者 練習問題

Q1.UPDATE文の説明として最も適切なものはどれか。
A.表から指定した列や行を取り出す問合せ文
B.表に新しいレコードを追加する命令
C.表の既存レコードの値を変更する命令
D.表から条件に合うレコードを削除する命令
Q2.UPDATE文の基本構文として正しいものはどれか。
A.UPDATE 表 VALUES (値) WHERE 条件
B.UPDATE 表 SET 列 = 値 WHERE 条件
C.UPDATE FROM 表 SET 列 = 値
D.UPDATE 列 = 値 INTO 表
Q3.「UPDATE 社員 SET 部署 = '企画'」のように WHERE 句を書かずに実行するとどうなるか。
A.エラーになり何も変わらない
B.最初の1行だけが変更される
C.表のすべての行の部署が企画に変更される
D.新しい行が1行追加される

関連コンテンツ