データを更新する(UPDATE)

PostgreSQL ではデータを更新するときに UPDATE コマンドを使用します。ここでは PostgreSQL でテーブルに格納されているデータを更新する方法について解説します。

(Last modified: )

データを更新する

テーブルに格納されているデータを更新するには UPDATE コマンドを使います。書式は次のとおりです。

UPDATE [ ONLY ] table_name 
    SET column_name = { expression | DEFAULT } [, ...]
    [ WHERE condition ]

テーブル名( table_name )のカラム名( column_name )のデータを新しいデータに更新します。

UPDATE コマンドを実行するには、コマンドを実行するロールがテーブルまたはテーブルの対象のカラムに対して UPDATE 権限を持っている必要があります。

テーブルのなかの指定したカラムの値をすべて指定した値に更新するには次のように実行します。

UPDATE table_name SET column_name = value

指定した条件に一致したデータだけを更新する場合は WHERE 句を使用します。

UPDATE table_name SET column_name = value WHERE 条件式

複数のカラムの値を同時に更新する場合は次のように実行します。

UPDATE table_name SET column_name1 = value1, column_name2 = value2 WHERE 条件式

または次のような記述の仕方もできます。

UPDATE table_name SET (column_name1, column_name2) = (value1, value2) WHERE 条件式

設定する新しい値には数値や文字列などの定数の他に、式や関数、またカラム名なども指定できます。

UPDATE table_name SET column_name = column_name + 1 WHERE 条件式

-- --

それでは実際に試してみます。次のようなテーブルを mydb データベースの中の myschema スキーマの中に作成しました。

create table myschema.product (
  name varchar(10), 
  price integer, 
  stock integer
);

データを更新する(1)

テーブルには次のようなデータを事前に追加しておきました。

insert into myschema.product values
  ('Orange', 200, 12),
  ('Melon', 450, 6),
  ('Grape', 320, 8),
  ('Apple', 180, 14),
  ('Peach', 380, 5);

データを更新する(2)

データの追加が完了しました。現在テーブルに格納されているデータを SELECT コマンドで取得して確認します。

select * from myschema.product;

データを更新する(3)

ではテーブルのデータを更新してみます。最初に name カラムの値が 'Grape' のデータについて price カラムの値を 320 から 340 に更新します。次のように実行してください。

update myschema.product set price=340 where name='Grape';

データを更新する(4)

データの更新が完了しました。それではあらためてテーブルの値を取得してみます。

データを更新する(5)

name カラムの値が 'Grape' のデータの price カラムの値が 340 に更新されていることが確認できました

-- --

次に stock カラムの値が 10 よりも少ないデータについて price カラムの値を 50 減少してみます。次のように実行してください。

update myschema.product set price=price-50 where stock < 10;

データを更新する(6)

データの更新が完了しました。それではあらためてテーブルの値を取得してみます。

データを更新する(7)

stock カラムの値が 10 よりも少ないデータについて price カラムの値が 50 減っていることが確認できました。

-- --

最後にすべてのデータについて stock カラムの値を 0 にします。 WHERE 句を指定しない場合はすべてのデータが更新の対象となります。次のように実行してください。

update myschema.product set stock=0;

データを更新する(8)

データの更新が完了しました。それではあらためてテーブルの値を取得してみます。

データを更新する(9)

テーブルのすべてのデータについて stock カラムの値が 0 になっていることが確認できました。

-- --

UPDATE コマンドを使ってテーブルに格納されたデータを更新する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。