PostgreSQL のすべてのテーブル行を削除する

Bilal Shahid 2024年2月15日
  1. PostgreSQL で TRUNCATE コマンドを使用してすべての行を削除する
  2. PostgreSQL で DELETE コマンドを使用してすべての行を削除する
  3. pgAdmin を使用して PostgreSQL のすべての行を削除する
  4. PostgreSQL で参照されているテーブルのすべての行を削除する
PostgreSQL のすべてのテーブル行を削除する

当面の問題は、テーブルからすべての行またはタプルを削除することですが、テーブル自体は削除しません。 これは、テーブルのすべてのデータが消去され、空になることを意味します。

PostgreSQL では、これを行う方法が 3つあります。 それらすべてを1つずつ説明しましょう。

PostgreSQL で TRUNCATE コマンドを使用してすべての行を削除する

TRUNCATE コマンドは、テーブルをスキャンせずにテーブル内のすべてのデータを空にするため、より高速で、より大きなテーブルに適しています。 TRUNCATE コマンドを使用してすべての行を削除する構文を見てみましょう。

TRUNCATE table_name;

その使用法を説明するために、次のサンプル データベースとテーブルを取り上げます。

create table my_table (
id int not null,
name varchar(30) not null,
constraint pk_student primary key (id)
);

insert into my_table values (1, First), (2, Second), (3, Third);

my_table の状態は、このステートメントを使用して表示できます。

Select * from my_table;

これにより、次のテーブルが返されます。

Postgres は TRUNCATE を使用してすべての行を削除 - 出力 1

次に、次のように TRUNCATE コマンドを実行して、挿入されたすべての行を削除します。

TRUNCATE my_table;

このコマンドを実行した後、テーブルのすべての行を選択すると、空のテーブルが表示されます。

TRUNCATE を使用して Postgres がすべての行を削除 - 出力 2

これは、テーブルのすべての行が削除されたことを示しています。

TRUNCATE コマンドを使用して、複数のテーブルを同時に空にしたり消去したりすることもできます。 この構文を以下に示します。

TRUNCATE table1, table2, , table3;

次に、テーブルからすべての行を削除する 2 番目の方法を見てみましょう。

PostgreSQL で DELETE コマンドを使用してすべての行を削除する

DELETE コマンドは主に、ある条件に従ってテーブルから特定の行を削除するために使用されます。 たとえば、上記の my_table では、次のように DELETE コマンドを使用して特定の行を削除できます。

DELETE FROM my_table WHERE id = 1;

DELETE コマンドを使用して、すべての行を削除する条件を指定できません。 このコマンドを実行すると、すべての行が削除されるため、空のテーブルになります。

構文は次のとおりです。

DELETE FROM table_name;

サンプルテーブル my_table でこのコマンドを使用してみましょう。

DELETE FROM my_table;

このコマンドを実行した後、select * from my_table; を使用してテーブルを一覧表示すると、 次のような空のテーブルが生成されます。

Postgres DELETE を使用してすべての行を削除 - 出力

DELETE コマンドは、TRUNCATE よりも低速です。これは、DELETE がすべてのテーブル行をスキャンして条件を探し、それらを個別に削除するためです。 したがって、DELETE は大きなテーブル サイズにはお勧めできません。

pgAdmin を使用して PostgreSQL のすべての行を削除する

テーブルからすべての行を削除するもう 1つの方法は、pgAdmin ツールを直接使用してデータベースを操作することです。 これは、以下で説明する手順に従って使用できます。

pgAdmin で、この画像に示すように、左側のブラウザでデータベースを開きます。

ブラウザ

スキーマオプションをクリックします。

スキーマ

ドロップダウン リストから、行を削除するテーブルを右クリックします。 次に示すように、いくつかのオプションが表示されます。

オプション

Truncate オプションをクリックします。 利用可能なオプションの中から、Truncate をもう一度クリックします。

切り捨て

ここで、すべてのテーブル行を一覧表示すると、切り捨てが機能したことを確認して、空のテーブルが表示されます。

PostgreSQL で参照されているテーブルのすべての行を削除する

テーブルからすべての行を削除したい場合、行が別のテーブルで参照されているかどうかを覚えておく必要があります。 一部の属性が別のテーブルの外部キーである場合、切り捨て中に効果をカスケードする必要があります。

そうしないと、外部キー制約違反エラーが発生します。 次の 2つのテーブルの例を使用して、これを説明しましょう。

create table student (
id int not null,
name varchar(30) not null,
constraint pk_student primary key (id)
);

create table grades (
student_id int not null,
grade varchar(1) not null,
course varchar(30) not null,
constraint pk_grades primary key (student_id, course),
constraint fk_grades foreign key (student_id) references student(id)
);

テーブル grades がテーブル student の 1つの属性を参照していることがわかります。 ここで、これらのテーブルにいくつかのデータを入力します。

insert into student values (1, 'First'), (2, 'Second');
insert into grades values (1, A, 'Database Systems'), (1, B, 'Programming Fundamentals'), (2, B, 'Database Systems');

student テーブルからすべての行を削除するには、student テーブルを参照しているため、grades テーブルからもそれらを削除する必要があります。 これを行うには、次のように両方のテーブルで TRUNCATE コマンドを使用できます。

TRUNCATE student, grades;

または、次のように TRUNCATE の後に CASCADE キーワードを使用できます。

TRUNCATE student CASCADE;

CASCADE キーワードは、student テーブル (この場合は grades テーブル) への外部キー参照を含むすべての行をテーブルから削除します。

カスケード切り捨てを行う別の方法は、pgAdmin ツールを使用することです。 これは、次の簡単な手順で実行できます。

まず、左側のブラウザに移動し、前述の手順に従ってテーブルにアクセスします。 次に、テーブルを右クリックします。 次のオプションが表示されます。

オプション

そこから、Truncate オプションを選択します。 それは以下をリストアップします:

切り捨て

Truncate Cascade をクリックします。 これにより、選択したテーブルのすべての行と、それに対する外部キー参照を持つテーブルが削除されます。

これは、PostgreSQL のテーブルからすべての行を削除するさまざまな方法をすべてまとめたものです。 すべての行を削除するための DELETE および TRUNCATE コマンドと、それを可能にするいくつかの pgAdmin ツールの使用法を学んでいただければ幸いです。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

関連記事 - PostgreSQL Table