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」が初期状態の場合の値です。これまでの操作によってレコード件数が増減している場合は、値が異なることもあります
|
|
|