データベース千夜一夜第9回

データの加工命令(3)~フィールドの一括更新と基本命令群のおさらい 長谷川裕行
有限会社 手國堂

フィールドの更新処理~UPDATE命令

INSERT命令はレコードの挿入(追加)、DELETE命令はレコードの削除……というふうに、これまでの加工命令はテーブル内のレコードを増減させるものでした。今回紹介するUPDATE命令はレコード数を変化させず、既存レコードの特定フィールドの「値」を書き換えます。


- 更新処理は実務で多用する -

業務では、商品の在庫数や入庫/出庫数を一斉に「0」でリセットする、払い込みが完了した支払先の「支払済」フィールドの値を一斉に「0」(未払)から「1」(支払済)に書き換える――といった処理を多用します。

このように、複数レコードに対して特定フィールドの値を一斉に同じ値で更新するには、UPDATE命令を使います。書式は以下のようになります。

  UPDATE <テーブル名> SET <フィールド1>=<値1>, <フィールド2>=値2, ...

<フィールド1>、<フィールド2>のところには更新したいフィールド名、=の後ろにはそのフィールドに設定したい値を記述します。データ型が異なるとエラーになるため、フィールドとデータ型の整合性を意識する必要があります。

 例えば、「商品_mr」テーブルの「在庫」フィールドの値をすべて「0」にリセットするには、以下のようなSQLを記述します。

  UPDATE 商品_mr 在庫=0

《注意》
このSQLを実行すると、テーブル「商品_mr」内のレコードがすべて書き換えられてしまいます。これはあくまで「例」なので、実行しないようにしてください。次節で、別のテーブルを使って実際に試す方法を紹介します。


- テスト用テーブルの準備 -

今回も、テスト用のダミーのテーブル「商品_dmy」を作って試すことにします。前回作成したものがそのまま残っている場合は、それを使っても構いません。新たに作成するには、既に何度か紹介したSELECT INTO文を使います。

クエリアナライザで以下のSQLを実行してください。

  DROP TABLE 商品_dmy --------------------★
  SELECT * INTO 商品_dmy FROM 商品_mr

★マークの行は、テーブル「商品_dmy」を削除するための処理です。この行は、データベース内に既にテーブル「商品_dmy」が存在している場合にだけ実行します。「商品_dmy」が存在しない場合は、“SELECT * INTO 商品_dmy FROM 商品_mr”だけを実行します。サンプルのクエリファイル“ex01.sql”には上記2行のSQLが記述されているので、上の1行は状況に応じて適宜削除してください。

メッセージウィンドウに「36件処理されました」のように表示されれば完了です※1。これで、「商品_mr」の同じフィールド構成で同じレコードを保存する「商品_dmy」テーブルが作成されます。

では、作成した「商品_dmy」テーブルでUPDATE命令を試してみましょう。

  UPDATE 商品_dmy SET 在庫=0

全レコードの「在庫」フィールドの値が一斉に「0」に書き換えられます。





※1「36件」という件数は、テーブル「商品_mr」が初期状態の場合の値です。これまでの操作によってレコード件数が増減している場合は、値が異なることもあります



トップページ
フィールドの更新処理~UPDATE命令
更新処理は実務で多用する
テスト用テーブルの準備
様々なフィールド更新処理
基本命令のおさらい
新しいサンプルデータベースの準備
あとがき
Copyright © MESCIUS inc. All rights reserved.