【Oracle】UPDATE文でデータを更新しよう!

Oracle

前回は、テーブルにデータを取得するSELECT文について説明しました。今回は、データを更新するUPDATE文について説明していきます!

データ準備

UPDATE文を試すためにテーブルを作成し、データを追加します。

-- テーブルの作成
CREATE TABLE products (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50),
    price NUMBER,
    category VARCHAR2(50)
);

-- データの登録
INSERT
  ALL INTO products (id, name, price, category)
VALUES
  (1, 'ガム', 120, 'お菓子')
INTO
  products (id, name, price, category)
VALUES
  (2, 'チョコレート', 150, 'お菓子')
INTO
  products (id, name, price, category)
VALUES
  (3, 'コーヒー', 250, '飲み物')
INTO
  products (id, name, price, category)
VALUES
  (4, 'りんご', 80, '果物')
INTO
  products (id, name, price, category)
VALUES
  (5, 'パン', 200, 'パン類')
INTO
  products (id, name, price, category)
VALUES
  (6, 'アイスクリーム', 300, 'お菓子')
INTO
  products (id, name, price, category)
VALUES
  (7, '紅茶', 180, '飲み物')
INTO
  products (id, name, price, category)
VALUES
  (8, 'バナナ', 60, '果物')
INTO
  products (id, name, price, category)
VALUES
  (9, 'サンドイッチ', 350, 'パン類')
INTO
  products (id, name, price, category)
VALUES
  (10, 'コーラ', 120, '飲み物')
SELECT * FROM DUAL;
商品名価格分類
ガム120お菓子
チョコレート150お菓子
コーヒー250飲み物
りんご80果物
パン200パン類
アイスクリーム300お菓子
紅茶180飲み物
バナナ60果物
サンドイッチ350パン類
コーラ120飲み物
商品テーブル

UPDATE文の使い方

データを更新するUPDATE文は下記のように記述します。

UPDATE テーブル名
     SET 列名1 = 値1, 列名2 = 値2 …
WHERE 条件式

WHERE句の使い方は下記記事で説明しました。

UPDATE テーブル名
       SET 列名1 = 値1, 列名2 = 値2 …

だけでデータを更新することもできますが、これではテーブル全ての列(カラム)の値を更新してしまいます。

例えば、作成した商品テーブルの価格を全て0円に設定する場合は下記の記述になります。

UPDATE products 
       SET price = 0
商品名価格分類
ガム0お菓子
チョコレート0お菓子
コーヒー0飲み物
りんご0果物
パン0パン類
アイスクリーム0お菓子
紅茶0飲み物
バナナ0果物
サンドイッチ0パン類
コーラ0飲み物
UPDATE文を使う場合はWHERE句が重要です

0円になってしまったガムの価格を120円に設定してみます。

UPDATE products 
       SET price = 120
WHERE name = 'ガム'
商品名価格分類
ガム120お菓子

果物は一律300円!

UPDATE products 
       SET price = 300
WHERE category = '果物'
商品名価格分類
りんご300果物
バナナ300果物

カテゴリーを複数指定して価格を更新。

UPDATE products 
       SET price = 200
WHERE category IN ('お菓子', 'パン類', '飲み物')
商品名価格分類
ガム200お菓子
チョコレート200お菓子
コーヒー200飲み物
りんご300果物
パン200パン類
アイスクリーム200お菓子
紅茶200飲み物
バナナ300果物
サンドイッチ200パン類
コーラ200飲み物

まとめ

UPDATE文はWHERE句を使わなくてもデータの更新は可能です。ただ、全てのデータが更新されてしまうので更新したいデータをしっかりとWHERE句で指定してあげましょう。

コメント