データを削除する(DELETE)

広告
eyecatch

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

データを削除する

テーブルに格納されているデータを削除するには 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 コマンドを使ってテーブルに格納されたデータを削除する方法について解説しました。

PostgreSQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。