SQL入門 STEP7|UPDATEでデータを更新しよう
登録済みのデータを変更してみよう
STEP6では、INSERTを使ってproductsテーブルに新しい商品を追加しました。
では、商品を登録した後に、
「価格を間違えて登録してしまった」
「商品名が変更になった」
という場合はどうすればいいでしょうか。
一度削除して登録し直すこともできますが、その必要はありません。
すでに登録されているデータを変更するときは、UPDATEを使います。
UPDATEとは?
テーブルに登録されているデータを更新するときに使うSQLです。
例えば、
- 商品の価格を変更する
- 商品名を変更する
といった操作ができます。

登録した後に間違いに気づいても、UPDATEで直せるんだね♪
商品の価格を変更してみよう
STEP6で登録した「Webカメラ」は、現在6000円になっています。
product_id | product_name | price
-----------+--------------+------
6 | Webカメラ | 6000今回は、この価格を6500円に変更してみましょう。
次のSQLを実行します。
UPDATE products
SET price = 6500
WHERE product_id = 6;実行できたら、SELECTで確認してみます。
SELECT * FROM products
WHERE product_id = 6;結果が、
product_id | product_name | price
-----------+--------------+------
6 | Webカメラ | 6500となっていれば成功です。
6000円だった価格が6500円に変更されています。
UPDATEの書き方を確認しよう
先ほど実行したSQLを分けて見てみましょう。
UPDATE products
SET price = 6500
WHERE product_id = 6;基本的な形は次のようになります。
UPDATE テーブル名
SET カラム名 = 新しい値
WHERE 条件;まず、
UPDATE productsで、更新するテーブルを指定しています。
次の、
SET price = 6500では、どのカラムを、どの値に変更するのかを指定しています。
今回はpriceを6500に変更しています。
最後の、
WHERE product_id = 6で、更新する商品を指定しています。
つまり、このSQL全体で、
「productsテーブルの商品IDが6の商品の価格を6500に変更する」
という意味になります。
UPDATEではWHEREがとても大切
UPDATEを使うときに、特に注意してほしいのがWHEREです。
先ほどは、
WHERE product_id = 6と指定しました。
そのため、商品IDが6のWebカメラだけが更新されています。
では、WHEREを書かなかったらどうなるでしょうか。
例えば次のSQLです。
UPDATE products
SET price = 6500;これは実行しないでください。
このSQLには、更新する商品を絞り込むWHEREがありません。
そのため、実行するとproductsテーブルに登録されているすべての商品の価格が6500になります。
UPDATEのWHERE忘れに注意!
UPDATE products
SET price = 6500
WHERE product_id = 6;WHEREがあれば、商品IDが6のデータだけが更新されます。
一方、
UPDATE products
SET price = 6500;では、すべてのデータが更新対象になります。
UPDATEを実行する前に、WHEREが正しく指定されているか確認しましょう。

WHEREを忘れると全部変わっちゃうの!?
UPDATEするときは、実行する前にちゃんと確認しないとだね!
更新する前にSELECTで確認しよう
UPDATEの操作に慣れてきても、WHEREの指定を間違えることはあります。
そこで覚えておきたいのが、
UPDATEする前にSELECTで対象を確認する
という方法です。
例えば、商品ID6を更新したいなら、まず次のSQLを実行します。
SELECT * FROM products
WHERE product_id = 6;結果を見て、
6 | Webカメラ | 6500だけが取得されていることを確認します。
その後で、
UPDATE products
SET price = 7000
WHERE product_id = 6;を実行します。
SELECTとUPDATEで同じWHEREを使っているのがポイントです。
UPDATE前の確認
いきなりUPDATEするのではなく、
- SELECTで更新対象を確認する
- WHEREが正しいことを確認する
- UPDATEを実行する
- もう一度SELECTで結果を確認する
という流れにすると、意図しないデータを更新するミスを減らせます。
この手順は、練習中だけでなく実際にデータを扱うときにも役立ちます。
商品名を変更してみよう
UPDATEでは、数値だけでなく文字も変更できます。
商品ID9には「PCスタンド」が登録されています。
今回は、商品名を「ノートPCスタンド」に変更してみましょう。
まずは対象を確認します。
SELECT * FROM products
WHERE product_id = 9;問題なければ、次のUPDATEを実行します。
UPDATE products
SET product_name = 'ノートPCスタンド'
WHERE product_id = 9;文字を指定しているので、
'ノートPCスタンド'のようにシングルクォーテーションで囲んでいます。
実行後、もう一度確認してみましょう。
SELECT * FROM products
WHERE product_id = 9;商品名が変更されていればOKです。
複数のカラムをまとめて変更してみよう
商品名と価格を同時に変更したい場合もあります。
UPDATEでは、複数のカラムを一度に更新できます。
例えば、商品ID8のHDMIケーブルについて、
- 商品名 → HDMIケーブル 2m
- 価格 → 1800円
に変更してみます。
まず確認します。
SELECT * FROM products
WHERE product_id = 8;続いてUPDATEを実行します。
UPDATE products
SET product_name = 'HDMIケーブル 2m',
price = 1800
WHERE product_id = 8;複数のカラムを更新するときは、SETの後ろを,で区切ります。
SET product_name = 'HDMIケーブル 2m',
price = 1800実行後に確認します。
SELECT * FROM products
WHERE product_id = 8;product_id | product_name | price
-----------+----------------+------
8 | HDMIケーブル 2m | 1800商品名と価格の両方が変更されていれば成功です。
条件に合う複数のデータを更新することもできる
WHEREは、商品IDだけを指定するものではありません。
例えば、
WHERE price < 5000とすれば、5000円未満の商品が対象になります。
そのため、次のようなUPDATEを書くこともできます。
UPDATE products
SET price = 5000
WHERE price < 5000;この場合、5000円未満の商品がすべて5000円に変更されます。
SQLとしては正しい書き方ですが、今回は実行しません。
ここで覚えておきたいのは、
WHEREを書けば必ず1件だけ更新されるわけではない
ということです。
条件に当てはまるデータが3件あれば、3件とも更新されます。
だからこそ、UPDATEする前にSELECTで対象を確認することが大切です。

WHEREがあっても安心しきっちゃダメなんだね。
何件が対象になるのか、先にSELECTで見ておこう♪
更新後のproductsを確認してみよう
ここまでの操作で、いくつかの商品情報を変更しました。
最後に全体を確認してみましょう。
SELECT * FROM products
ORDER BY product_id ASC;ここまで記事どおりに進めていれば、主な変更点は、
- Webカメラの価格が7000円
- PCスタンド → ノートPCスタンド
- HDMIケーブル → HDMIケーブル 2m
- HDMIケーブル 2mの価格が1800円
となっています。
このデータは、次のSTEPでもそのまま使います。
よくある間違い
WHEREを書き忘れる
UPDATEで特に気を付けたい間違いです。
UPDATE products
SET price = 7000;このSQLでは、すべての商品が更新対象になります。
「1件だけ変更するつもりだった」という場合でも、SQLは書かれている内容どおりに処理します。
実行前にWHEREを確認しましょう。
WHEREの値を間違える
商品ID6を変更するつもりで、
WHERE product_id = 8と書けば、当然ながら商品ID8が更新されます。
SQL自体は正常に実行されるため、エラーにならないのが怖いところです。
更新前のSELECTで対象を確認する習慣を付けておきましょう。
文字をシングルクォーテーションで囲んでいない
商品名を変更するときは、
SET product_name = 'ノートPCスタンド'のように、文字を'で囲みます。
INSERTやWHEREで文字を扱ったときと同じです。
複数のカラムを更新するときにカンマを忘れる
SET product_name = 'HDMIケーブル 2m',
price = 1800複数のカラムを変更するときは,で区切ります。
STEP7のまとめ
STEP7のポイント
UPDATEを使うと登録済みのデータを変更できるSETで変更するカラムと新しい値を指定するWHEREで更新するデータを絞り込む- WHEREがないUPDATEはすべてのデータが更新対象になる
- WHEREがあっても複数件が対象になることがある
- 複数のカラムをまとめて変更することもできる
- UPDATEの前後にSELECTでデータを確認する
UPDATEは便利ですが、SELECTとは違ってテーブルに保存されているデータそのものを書き換えます。
そのため、書き方だけ覚えるのではなく、
「まずSELECTで対象を確認してからUPDATEする」
ところまでセットで身につけておきましょう。

STEP7クリア!
データを変更できるようになったね。実行前のSELECTも忘れずに♪
次のSTEPへ
INSERTでデータを追加し、UPDATEで登録済みのデータを変更できるようになりました。
次は、不要になったデータをテーブルから削除してみます。
削除に使うDELETEも、UPDATEと同じようにWHEREの指定がとても重要です。
次のSTEPでは、データを安全に削除するための確認方法も一緒に見ていきましょう。
学習内容を確認したいときは、SQL入門の一覧から各STEPを確認できます。
