データベースの更新作業をする場合に最も多いケースが条件指定を付けた更新となります。
全てのレコードを一度に書き換えるケースも無いとは言いませんが、実運用では分岐によって書き換えと追加を操作することがほとんどでしょう。
そこで今回は「WHEREを使ったUPDATE」について解説してみたいと思います。
UPDATEにおけるWHEREとは

UPDATEにおけるWHEREの役割は「条件式の設定」です。
勿論WHERE自体はUPDATE固有のものではありませんので、当然SELECT句やINSERT句にも付帯することが出来ます。
またUPDATEやSELECTには条件式を必ず付帯させなければならないということもないため、学習を始めたばかりの方にとって、WHEREの重要性というのはあまり理解できていないかもしれません。
UPDATE句にはWHEREを忘れず付帯させる
WHEREの重要性は恐らくUPDATEにこそあります。
UPDATEには、その特徴として検索条件を満たす全ての行を更新対象とします。
もしUPDATEにWHEREを設定していなかった場合、全てのレコードが変更対象となってしまうため、意図せぬトラブルに見舞われるでしょう。
10件や20件程度なら記憶を頼りに修正できるかもしれませんが、ビッグデータになるともう不可能です。
こういう理由から、UPDATEを使用する上で最も意識しておかなくてはならないことは「検索条件の設定(WHERE)」だと言えるでしょう。
UPDATE文でのWHEREの使い方

次はUPDATE文でのWHEREの使い方について説明していきたいと思います。
通常UPDATE文は次のように記述します。
UPDATE
[テーブル名]
SET
[カラムA] = 値1, [カラムB] = 値2, [カラムC] = 値3, ・・・・・
UPDATEで変更を加えるテーブルを指定し、SETで変更内容を具体的に指定します。
これにWHEREで条件を設定すると次のような記述となります。
UPDATE
[テーブル名]
SET
[カラムA] = 値1, [カラムB] = 値2, [カラムC] = 値3, ・・・・・
WHERE
[検索条件1]
AND/OR
[検索条件2]
AND/OR
[検索条件3]
・
・
・
条件の設定は何件でも行えますが、複数の条件を設定する場合には条件を一つずつ分ける必要があります。
そしてその条件毎に”AND”もしくは”OR”で繋げて行きます。
サンプルコードで確認する
それでは実際にサンプルコードで動作を確認していきましょう。
今回のサンプルで使用するデータベーステーブルは次の通りです。
// sample_table
id name type price
----------- -------------------- -------------------- -----------
1 APPLE Fruit 200
2 ORANGE Fruit 180
3 COLA Drink 120
4 Coffee Drink 160
このテーブルを使って、UPDATEを行います。
サンプルコードは次の通りです。
UPDATE
sample_table
SET
price = 180
;
GO
(4 行処理されました)
SELECT * FROM sample_table;
GO
id name type price
----------- -------------------- -------------------- -----------
1 APPLE Fruit 180
2 ORANGE Fruit 180
3 COLA Drink 180
4 Coffee Drink 180
UPDATE
sample_table
SET
price = 160
WHERE
name = 'COLA'
;
GO
(1 行処理されました)
SELECT * FROM sample_table;
GO
id name type price
----------- -------------------- -------------------- -----------
1 APPLE Fruit 200
2 ORANGE Fruit 180
3 COLA Drink 160
4 Coffee Drink 160
UPDATE
sample_table
SET
price = 100
WHERE
type = 'Drink'
AND
price > 120
;
GO
(1 行処理されました)
SELECT * FROM sample_table;
GO
id name type price
----------- -------------------- -------------------- -----------
1 APPLE Fruit 200
2 ORANGE Fruit 180
3 COLA Drink 120
4 Coffee Drink 100
まず一つ目(1行目~5行目)は通常のUPDATE(全件対象)、そして二つ目(18行目~24行目)はWHEREを使って一つだけ条件を設定したもの、更に三つ目(37行目~45行目)はWHEREを使って複数の条件を設定したものとなっています。
このように条件設定をすることで、全件を対象とした変更がされていないことが確認できます。
まとめ
今回はWHEREを使って条件を設定してUPDATEする方法について解説してみましたが、いかがでしたか?
UPDATE自体はそう難しいものでもありませんし、WHEREも基本的な形はすぐ覚えられるはずです。
WHEREとサブクエリを組み合わせる方法やLIKEを使った方法など、これより若干複雑になってくるクエリもありますので、基本はしっかりと抑えておくようにしましょう。