データの更新(UPDATE)

INSERTコマンドで登録したデータを変更(更新)するにはUPDATEコマンドを使用します。

UPDATEコマンド

UPDATEコマンドにより、テーブルのデータを変更することができます。基本的な構文は以下になります。

UPDATEコマンドの基本構文
UPDATE テーブル名 SET 列名 = 式 WHERE 条件式;

更新対象の列と、更新後の値は、SET句で指定します。また、更新対象の行はWHERE句で指定します。

例えば、渡辺さんが結婚して苗字が「桜井」に変わったとします。その場合は、以下のようなUPDATEコマンドを発行して、渡辺さんの名前を変更します。

testdb=# UPDATE Staff SET name = '桜井さつき' WHERE id='0004';

次に、name列が正しく変更されたかどうかSELECTコマンドで確認してみます。

testdb=# SELECT * FROM Staff;
  id  |    name    | age
------+------------+-----
 0001 | 山田太郎   |  26
 0002 | 佐藤隆     |  34
 0003 | 斉藤達弘   |  45
 0004 | 桜井さつき |  28
(4 行)

正しく変更されているのが確認できます。

全行を更新する

更新対象の行を指定するのはWHERE句ですが、WHERE句を記述しないことで、全行を更新対象とすることになります。

例えば、以下のUPDATEコマンドを発行してみましょう。

testdb=# UPDATE Staff SET age = 46;

変更後、全行をSELECTコマンドで確認すると以下のような結果になります。

testdb=# SELECT * FROM Staff;
  id  |    name    | age
------+------------+-----
 0001 | 山田太郎   |  46
 0002 | 佐藤隆     |  46
 0003 | 斉藤達弘   |  46
 0004 | 桜井さつき |  46
(4 行)

すべての行のage列が更新されています。基本的に、全行に対して同じ値で更新するようなケースはめずらしく、大抵がWHERE句の記述を忘れたなどの操作ミスにより、誤って更新してしまったというパターンとなるでしょう。

WHERE句を指定しないとテーブル内のすべての行のデータが更新されてしまうという点に十分注意しておきましょう。