テーブルのデータ更新ってどうやってやるの?
UPDATE文の使い方がわからない。
わかりやすく教えてほしい!
こういった疑問にこたえます。
エンジニアの僕がわかりやすく解説します。
UPDATE文の使い方
UPDATE文はテーブルのデータを更新する場合に使います。
UPDATE文の基本
テーブルに一度登録したデータを変更したい場合、DELETEして再度INSERTする必要はありません。
UPDATE文を使えばデータを更新できます。
UPDATE文の構文は次の通りです。
UPDATE <テーブル名> SET <列名> = <式>;
更新対処の列と更新後の値をSET句に記述します。
例えば、次のようなshohinテーブルがあったとします。
shohin_id | shohin_mei | shohin_bunrui | kakaku |
‘0001’ | ‘鉛筆’ | ‘事務用品’ | 100 |
‘0002’ | ‘ボールペン’ | ‘事務用品’ | 100 |
‘0003’ | ‘Tシャツ’ | ‘衣類’ | 1000 |
‘0004’ | ‘鍋’ | ‘キッチン用品’ | 2000 |
‘0005 | ‘包丁’ | ‘キッチン用品’ | 1500 |
‘0006’ | ‘帽子’ | ‘衣類’ | NULL |
このshohinテーブルのkakakuを1000に変更したい場合は次のようなSQLになります。
UPDATE shohin SET kakaku = 1000;
実行するとkakaku列の全行が1000に更新されます。
shohin_id | shohin_mei | shohin_bunrui | kakaku |
‘0001’ | ‘鉛筆’ | ‘事務用品’ | 1000 |
‘0002’ | ‘ボールペン’ | ‘事務用品’ | 1000 |
‘0003’ | ‘Tシャツ’ | ‘衣類’ | 1000 |
‘0004’ | ‘鍋’ | ‘キッチン用品’ | 1000 |
‘0005 | ‘包丁’ | ‘キッチン用品’ | 1000 |
‘0006’ | ‘帽子’ | ‘衣類’ | 1000 |
条件を指定したUPDATE文
一部の行のデータを更新する場合はWHERE句を使って対象行を指定する必要があります。
対象行を指定した更新を「探索型UPDATE」と呼びます。
探索型UPDATEの構文は次の通りです。
UPDATE <テーブル名> SET <列名> = <式> WHERE <条件>;
例えば、先ほどUPDATEでkakakuを1000に更新したテーブルでshohin_bunruiがキッチン用品のkakakuだけ2000に更新したい場合は次のようなSQLになります。
UPDATE shohin SET kakaku = 2000 WHERE shohin_bunrui = 'キッチン用品';
実行結果
shohin_id | shohin_mei | shohin_bunrui | kakaku |
‘0001’ | ‘鉛筆’ | ‘事務用品’ | 1000 |
‘0002’ | ‘ボールペン’ | ‘事務用品’ | 1000 |
‘0003’ | ‘Tシャツ’ | ‘衣類’ | 1000 |
‘0004’ | ‘鍋’ | ‘キッチン用品’ | 2000 |
‘0005 | ‘包丁’ | ‘キッチン用品’ | 2000 |
‘0006’ | ‘帽子’ | ‘衣類’ | 1000 |
複数列を更新する方法
UPDATE文のSET句には複数の列を更新対象として指定することが可能です。
例えば、shohin_idが0006のshohin_meiとshohin_bunruiを変更したい場合は次のように記述します。
UPDATE shohin
SET shohin_mei = '消しゴム', shohhin_bunrui = '事務用品'
WHERE shohin_id = '0006';
実行結果
shohin_id | shohin_mei | shohin_bunrui | kakaku |
‘0001’ | ‘鉛筆’ | ‘事務用品’ | 1000 |
‘0002’ | ‘ボールペン’ | ‘事務用品’ | 1000 |
‘0003’ | ‘Tシャツ’ | ‘衣類’ | 1000 |
‘0004’ | ‘鍋’ | ‘キッチン用品’ | 2000 |
‘0005 | ‘包丁’ | ‘キッチン用品’ | 2000 |
‘0006’ | ‘消しゴム’ | ‘事務用品’ | 1000 |
UPDATE文の使い方まとめ
解説の内容をまとめます。
- テーブルのデータを更新する場合はUPDATE文を使う
- 更新対処の列と更新後の値をSET句に記述する
- 一部の行のデータを更新する場合はWHERE句に条件を記述する
- 複数列を更新したい場合はSET句に複数の列を更新対象として指定する
以上、お疲れ様でした。
コメント