データの更新

広告

テーブルに格納されているデータを更新するにはUPDATE文を使います。基本となる書式は次の通りです。

UPDATE db_name.tbl_name SET col_name1=expr1 [, col_name2=expr2 ...]
  [WHERE where_condition];

指定のデータベース内にある指定のテーブルに対し、指定したカラムに新しい値を設定します。

USE文を使ってデータベースに接続している状態で、そのデータベース内にあるテーブルのデータを更新する場合は次のように単にテーブル名だけを指定して作成することもできます。

UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...]
  [WHERE where_condition];

数値や文字列の値、又は関数や式などを指定したカラムに新しい値として格納します。

テーブル内のどのデータを更新するのかをWHERE句を使って指定します。WHERE句は省略可能ですが、その場合はテーブル内の全てのデータが順に更新されていきます。

[例1]idカラムの値が10のデータのpriceカラムの値を1000に設定する
  UPDATE uriage SET price = 1000 WHERE id = 10;

[例2]countカラムの値が100より小さいデータのpriceカラムの値を半分に設定する
  UPDATE uriage SET price = price / 2 WHERE count < 100;

[例3]全てのデータのcountカラムの値を0にし、priceカラムの値を0に設定する
  UPDATE uriage SET count = 0, price = 0;

上記の2番目の例では「price = price / 2」のように新しい値として「price / 2」という式を指定しています。これは既存のデータの値を取り出し半分にした値を同じカラムに格納するという意味です。このように対象のデータのカラムの値をカラム名を記述することで参照することができます。

サンプル

実際に試してみます。まず次のようなテーブルを作成します。

mysql> create table uriage(name varchar(20), price int, count int);

p7-1

テーブルにはデータを次のように格納しておきます。

p7-2

ではまず「name」カラムの値が'Banana'のデータの「price」カラムの値段を140に変更します。

mysql> update uriage set price = 140 where name = 'Banana';

p7-3

更新後にデータを取得してみると'Banana'の値段が140に変更されていることが確認できます。

次に「name」カラムの値が'Apple'のデータの「count」カラムの値に5を追加します。

mysql> update uriage set count = count + 5 where name = 'Apple';

p7-4

更新後にデータを取得してみると'Apple'の「count」カラムの値が8から13に変更されていることが確認できます。

次に「count」カラムの値が10以下のデータに対して「price」カラムの値から50を引きます。

mysql> update uriage set price = price - 50 where count <= 10;

p7-5

更新後にデータを取得してみると「count」カラムの値が10以下の'Banana'と'Melon'の値段が50引かれていることが確認できます。

最後に全てのデータに対して「price」カラムと「count」カラムの0に設定します。

mysql> update uriage set price = 0, count = 0;

p7-6

更新後にデータを取得してみると全てのデータの「price」カラムと「count」カラムの値が0に設定されていることが確認できます。

( Written by Tatsuo Ikura )