【SQL第9回】データの更新・削除:UPDATE
データの取得(SELECT)から一歩進み、すでにデータベースに登録されているデータを書き換える「UPDATE文」と、不要なデータを消去する「DELETE文」を学習します。間違えると大惨事になる「WHERE句」の重要性を解説します。
1. 登録データを書き換える UPDATE 文
会員のメールアドレス変更、商品の価格改定など、すでにテーブル内にあるデータを上書き修正するために用いるのが `UPDATE文` です。
`UPDATE テーブル名 SET カラム名 = 新しい値` と記述し、複数の列を同時に修正したい場合はカンマ `,` で区切って指定します。
2. 不要なレコードを消去する DELETE 文
退会したユーザーのデータ、キャンセルされた注文履歴など、不要になったレコード(行)をテーブルから完全削除する命令が `DELETE文` です。
`DELETE FROM テーブル名` と記述します。SELECT文のように「特定の列だけ消す」ということはできず、**常に「行(レコード)単位」での削除**になります(※特定の列の中身だけを空にしたい場合は、DELETEではなくUPDATEでその列に `NULL` を代入します)。
3. 実務で最も恐れられる「WHERE句の書き忘れ」
UPDATE文やDELETE文を実行する際、絶対に忘れてはならない超最重要ルールがあります。それは、**「必ずWHERE句を指定して、操作対象の行をピンポイントで絞り込む」**ということです。
🚨 全データの上書き・全データ消去の大事故
・`UPDATE users SET active_status = ‘退会’;` ➔ WHEREがないため、**全ユーザーが強制的に退会処理**されます。
・`DELETE FROM users;` ➔ WHEREがないため、**全ユーザーのデータが跡形もなく一瞬で全消去**されます。
実務でこれをやると会社の存続に関わる大事故になります。実行前には必ずWHERE句の絞り込みIDが正しいか、3回以上確認する習慣をつけてください。
4. データの書き換えと削除を行うSQLクエリ
以下のクエリは、特定のユーザー情報(ID: 5)を安全に更新し、またキャンセルされた注文(ID: 102)をピンポイントで安全に削除するコード例です。
-- 1. 特定の会員の情報を上書き更新(WHEREで狙い撃ち) UPDATE users SET email = 'new_yamada@example.com', age = 26 WHERE id = 5; -- これを忘れると全員が26歳になります -- 2. 特定の注文レコードを削除 DELETE FROM orders WHERE id = 102; -- これを忘れると売上履歴がすべて消滅します
SQLのUPDATE文において、書き換えたいテーブル名を指定した直後に置き、新しい値を代入するカラム名を「SET」の後に繋げて記述する英文字3文字のキーワードは何でしょうか?
※この問題の解答と解説は、ページ最下部(まとめの前)に掲載しています。
5. まとめと次回予告
第9回の講義はお疲れ様でした!今回の重要ポイントを振り返りましょう。
- `UPDATE テーブル名 SET カラム = 値` で登録済みデータを上書き修正できる。
- `DELETE FROM テーブル名` で不要なレコードを行単位で消去できる。
- 全データ上書き・全消去の重大事故を防ぐため、UPDATE/DELETEの後は必ず `WHERE` 句で対象行を絞り込む。
次回(第10回)は、本SQL講座の集大成となる最終実践講義「実践!集計クエリを書いてみよう」です。実際の売上分析やユーザー行動分析などで実務で多用される、高度な複数テーブル結合&集計グループ化クエリを構築します。お楽しみに!
📖 SQLの基礎を全10回でマスターする
🔑 第9回 理解度チェックの解答と解説
【解説】
正解は **`SET`** です。 `UPDATE products SET price = 1500 WHERE id = 3;` のように使用し、更新対象のテーブル名を宣言した直後に `SET` を置き、その後に新しく上書き代入したいカラムと値のペアを定義します。