データを削除する(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 );
テーブルには次のようなデータを事前に追加しておきました。
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');
データの追加が完了しました。現在テーブルに格納されているデータを SELECT コマンドで取得して確認します。
select * from myschema.accesslog;
それではテーブルのデータを削除します。最初に type カラムの値が 'search' のデータについて削除します。次のように実行してください。
delete from myschema.accesslog where type='search';
データの削除が完了しました。それではあらためてテーブルの値を取得してみます。
type カラムの値が 'search' のデータが削除されていることが確認できました。
-- --
次にテーブルに格納されているデータをすべて削除します。次のように実行してください。
delete from myschema.accesslog;
データの削除が完了しました。それではあらためてテーブルの値を取得してみます。
テーブルに格納されていたデータがすべて削除されてテーブルが空になっていることが確認できました。
-- --
DELETE コマンドを使ってテーブルに格納されたデータを削除する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。