PostgreSQL のすべてのテーブル行を削除する
-
PostgreSQL で
TRUNCATE
コマンドを使用してすべての行を削除する -
PostgreSQL で
DELETE
コマンドを使用してすべての行を削除する -
pgAdmin
を使用して 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;
これにより、次のテーブルが返されます。
次に、次のように TRUNCATE
コマンドを実行して、挿入されたすべての行を削除します。
TRUNCATE my_table;
このコマンドを実行した後、テーブルのすべての行を選択すると、空のテーブルが表示されます。
これは、テーブルのすべての行が削除されたことを示しています。
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;
を使用してテーブルを一覧表示すると、 次のような空のテーブルが生成されます。
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
ツールの使用法を学んでいただければ幸いです。
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