支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • SQL文のUPDATEにて複数更新す

1.SQL文のUPDATEにて複数更新する

SQL文にてテーブル内のデータを更新する場合、UPDATEを使用します。 SQL文のUPDATEは、レコードを更新するための構文で、全てのレコードを一括更新、もしくは条件式を満たす特定のレコードだけを更新することができます。 条件に当てはまるレコードが存在しない場合は更新されませんが、文法的に正しいのでエラーにはなりません。
SQL文のUPDATEの記述方法は以下になります。

UPDATE テーブル名
SET 列名 = 変更内容, …
WHERE 条件式;

上の記述の条件式にて主キーを指定すれば、対象の1件のみ更新となりますが、それ以外の条件式を指定すれば対象となる複数件が更新対象となります。
以下のテーブルを元に使用例を記述します。

・テーブル名:家族テーブル

番号:1、順番:1、名前:山田一郎、性別:1、年齢:20、ポイント:80、備考:長男です。
番号:2、順番:2、名前:山田二郎、性別:1、年齢:19、ポイント:10、備考:NULL
番号:3、順番:3、名前:山田三郎、性別:1、年齢:17、ポイント:40、備考:NULL
番号:4、順番:4、名前:山田四郎、性別:1、年齢:16、ポイント:30、備考:NULL
番号:5、順番:1、名前:山田花子、性別:2、年齢:20、ポイント:50、備考:長女です。
番号:6、順番:2、名前:山田優子、性別:2、年齢:15、ポイント:10、備考:NULL
主キーは番号になります。

①全ての行を更新するSQL文(条件を指定しない場合、テーブルの全データを更新する)
UPDATE 家族テーブル
SET ポイント = 100;

①実行結果
番号:1、順番:1、名前:山田一郎、性別:1、年齢:20、ポイント:100、備考:長男です。
番号:2、順番:2、名前:山田二郎、性別:1、年齢:19、ポイント:100、備考:NULL
番号:3、順番:3、名前:山田三郎、性別:1、年齢:17、ポイント:100、備考:NULL
番号:4、順番:4、名前:山田四郎、性別:1、年齢:16、ポイント:100、備考:NULL
番号:5、順番:1、名前:山田花子、性別:2、年齢:20、ポイント:100、備考:長女です。
番号:6、順番:2、名前:山田優子、性別:2、年齢:15、ポイント:100、備考:NULL

②条件にあてはまる行を更新するSQL文(条件にて主キーを指定する場合、テーブルの対象となるデータ1件のみ更新する)
UPDATE 家族テーブル
SET ポイント = 100,
備考 = 'ポイント変更しました。'
WHERE 番号 = 1;

②実行結果
番号:1、順番:1、名前:山田一郎、性別:1、年齢:20、ポイント:100、備考:ポイント変更しました。
番号:2、順番:2、名前:山田二郎、性別:1、年齢:19、ポイント:10、備考:NULL
番号:3、順番:3、名前:山田三郎、性別:1、年齢:17、ポイント:40、備考:NULL
番号:4、順番:4、名前:山田四郎、性別:1、年齢:16、ポイント:30、備考:NULL
番号:5、順番:1、名前:山田花子、性別:2、年齢:20、ポイント:50、備考:長女です。
番号:6、順番:2、名前:山田優子、性別:2、年齢:15、ポイント:10、備考:NULL

③条件にあてはまる行を更新するSQL文(条件にて主キー以外を指定する場合、テーブルの対象となるデータを複数件更新する)
UPDATE 家族テーブル
SET ポイント = 100,
備考 = 'ポイント変更しました。'
WHERE 年齢 = 20;

③実行結果
番号:1、順番:1、名前:山田一郎、性別:1、年齢:20、ポイント:100、備考:ポイント変更しました。
番号:2、順番:2、名前:山田二郎、性別:1、年齢:19、ポイント:10、備考:NULL
番号:3、順番:3、名前:山田三郎、性別:1、年齢:17、ポイント:40、備考:NULL
番号:4、順番:4、名前:山田四郎、性別:1、年齢:16、ポイント:30、備考:NULL
番号:5、順番:1、名前:山田花子、性別:2、年齢:20、ポイント:100、備考:ポイント変更しました。
番号:6、順番:2、名前:山田優子、性別:2、年齢:15、ポイント:10、備考:NULL

2.最後に

処理側でテストデータが必要な場合に、一時的に複数のデータを更新したり、更新後の複数のデータを元に戻すために再度複数更新したりするためにSQL文にてUPDATEを行い複数件のデータの更新を行うことがあります。 たまに対象のデータの条件指定が正しく行われておらず、対象のデータのみではなく全データを更新されてしまうなどでテストが止まってしまうことなどがありました。データの更新を行う際には、条件の指定が正しく行われているのかを確認するためにUPDATEを実行する前に、SELECTに修正して実行してみるといいかもしれません。更新は実行されませんし本当に更新したい対象のデータのみになっているかの確認も抽出結果で行えます。