データを削除する(DELETE)

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

(Last modified: )

データを削除する

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

DELETE FROM [ ONLY ] table_name
    [ WHERE condition ]

テーブル名( table_name )のデータを削除します。 WHERE 句を指定した場合は条件に一致したデータを削除し、WHERE 句を指定しなかった場合はテーブルに含まれるすべてのデータを削除します。

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

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

DELETE FROM table_name WHERE 条件式

テーブルに含まれるすべてのデータを削除するには次のように記述します。

DELETE FROM table_name

-- --

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

create table myschema.accesslog (
  page varchar(20), 
  type varchar(10), 
  dt date
);

データを削除する(1)

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

insert into myschema.accesslog values
  ('top.html', 'direct', '2019-05-02'),
  ('products.html', 'search', '2019-04-24'),
  ('shop.html', 'direct', '2019-05-04'),
  ('top.html', 'search', '2019-03-29'),
  ('corp.html', 'search', '2019-04-18');

データを削除する(2)

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

select * from myschema.accesslog;

データを削除する(3)

それではテーブルのデータを削除します。最初に type カラムの値が 'search' のデータについて削除します。次のように実行してください。

delete from myschema.accesslog where type='search';

データを削除する(4)

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

データを削除する(5)

type カラムの値が 'search' のデータが削除されていることが確認できました。

-- --

次にテーブルに格納されているデータをすべて削除します。次のように実行してください。

delete from myschema.accesslog;

データを削除する(6)

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

データを削除する(7)

テーブルに格納されていたデータがすべて削除されてテーブルが空になっていることが確認できました。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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