Löschen Sie alle Tabellenzeilen in PostgreSQL

Bilal Shahid 15 Februar 2024
  1. Löschen Sie alle Zeilen mit dem Befehl TRUNCATE in PostgreSQL
  2. Löschen Sie alle Zeilen mit dem Befehl DELETE in PostgreSQL
  3. Alle Zeilen in PostgreSQL mit pgAdmin löschen
  4. Alle Zeilen einer referenzierten Tabelle in PostgreSQL löschen
Löschen Sie alle Tabellenzeilen in PostgreSQL

Das vorliegende Problem besteht darin, alle Zeilen oder Tupel aus einer Tabelle zu löschen, aber nicht die Tabelle selbst zu löschen. Das bedeutet, dass alle Daten aus der Tabelle gelöscht und geleert werden.

In PostgreSQL gibt es dafür drei Möglichkeiten. Lassen Sie uns alle nacheinander besprechen.

Löschen Sie alle Zeilen mit dem Befehl TRUNCATE in PostgreSQL

Der Befehl TRUNCATE löscht alle Daten in der Tabelle, ohne sie zu scannen, wodurch er schneller und besser für größere Tabellen geeignet ist. Schauen wir uns die Syntax zum Löschen aller Zeilen mit dem Befehl TRUNCATE an.

TRUNCATE table_name;

Um die Verwendung zu veranschaulichen, nehmen wir eine Beispieldatenbank und Tabelle wie folgt:

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);

Mit dieser Anweisung kann der Zustand von my_table angezeigt werden.

Select * from my_table;

Dies gibt die folgende Tabelle zurück:

Postgres löscht alle Zeilen mit TRUNCATE - Ausgabe 1

Lassen Sie uns nun alle eingefügten Zeilen löschen, indem Sie den Befehl TRUNCATE wie folgt ausführen:

TRUNCATE my_table;

Wenn wir nach dem Ausführen dieses Befehls alle Zeilen der Tabelle auswählen, wird eine leere Tabelle angezeigt:

Postgres löscht alle Zeilen mit TRUNCATE - Ausgabe 2

Dies zeigt, dass alle Zeilen der Tabelle gelöscht wurden.

Wir können auch den Befehl TRUNCATE verwenden, um mehrere Tabellen gleichzeitig zu leeren oder zu löschen. Die Syntax dafür ist unten dargestellt.

TRUNCATE table1, table2, , table3;

Sehen wir uns nun die zweite Möglichkeit an, alle Zeilen aus einer Tabelle zu löschen.

Löschen Sie alle Zeilen mit dem Befehl DELETE in PostgreSQL

Der Befehl DELETE wird hauptsächlich verwendet, um bestimmte Zeilen aus einer Tabelle zu löschen, die einer bestimmten Bedingung folgen. Zum Beispiel können wir in my_table oben eine bestimmte Zeile löschen, indem wir den Befehl DELETE wie folgt verwenden:

DELETE FROM my_table WHERE id = 1;

Wir können keine Bedingung angeben, um alle Zeilen mit dem Befehl DELETE zu löschen. Die Ausführung dieses Befehls führt zu einer leeren Tabelle, da alle Zeilen gelöscht werden.

Die Syntax ist wie folgt:

DELETE FROM table_name;

Lassen Sie uns diesen Befehl auf unsere Beispieltabelle my_table anwenden.

DELETE FROM my_table;

Wenn wir nach Ausführung dieses Befehls die Tabelle mit select * from my_table; auflisten -Anweisung wird eine leere Tabelle wie diese generiert:

Postgres löscht alle Zeilen mit DELETE - Ausgabe

Der Befehl DELETE ist langsamer als TRUNCATE, weil DELETE jede Tabellenzeile nach der Bedingung durchsucht und einzeln löscht. Daher wird DELETE für grössere Tabellengrössen nicht empfohlen.

Alle Zeilen in PostgreSQL mit pgAdmin löschen

Eine weitere Möglichkeit, alle Zeilen aus einer Tabelle zu löschen, besteht darin, die Datenbank direkt mit den pgAdmin-Tools zu manipulieren. Sie können dies verwenden, indem Sie die unten erläuterten Schritte ausführen.

Öffnen Sie in pgAdmin Ihre Datenbank im Browser auf der linken Seite, wie in diesem Bild gezeigt:

Browser

Klicken Sie auf die Option Schemata.

Schemata

Klicken Sie in der Dropdown-Liste mit der rechten Maustaste auf die Tabelle, deren Zeilen Sie löschen möchten. Einige Optionen werden wie hier gezeigt angezeigt:

Optionen

Klicken Sie auf die Option Abschneiden. Klicken Sie unter den verfügbaren Optionen erneut auf Truncate.

Kürzen

Wenn Sie nun alle Tabellenzeilen auflisten, wird eine leere Tabelle angezeigt, die bestätigt, dass die Kürzung funktioniert hat.

Alle Zeilen einer referenzierten Tabelle in PostgreSQL löschen

Wenn wir alle Zeilen aus einer Tabelle löschen möchten, müssen wir uns daran erinnern, ob auf eine Zeile in einer anderen Tabelle verwiesen wird. Der Effekt muss beim Abschneiden kaskadiert werden, wenn ein Attribut ein Fremdschlüssel in einer anderen Tabelle ist.

Andernfalls erhalten wir einen Fehler wegen Verletzung der Fremdschlüsselbeschränkung. Lassen Sie uns dies am Beispiel der folgenden zwei Tabellen erläutern:

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)
);

Wir sehen, dass die Tabelle Noten ein Attribut aus der Tabelle student referenziert. Nun füllen wir diese Tabellen mit einigen Daten:

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

Um alle Zeilen aus der Tabelle student zu löschen, müssen wir sie auch aus der Tabelle Noten löschen, da sie auf die Tabelle student verweist. Dazu können wir entweder den Befehl TRUNCATE auf beiden Tabellen wie folgt verwenden:

TRUNCATE student, grades;

Oder wir können das Schlüsselwort CASCADE nach TRUNCATE folgendermaßen verwenden:

TRUNCATE student CASCADE;

Das Schlüsselwort CASCADE löscht auch alle Zeilen aus der Tabelle mit Fremdschlüsselverweisen auf die Tabelle student, in diesem Fall die Tabelle grades.

Eine andere Möglichkeit, kaskadierte Kürzungen vorzunehmen, sind die pgAdmin-Tools. Dies kann durch die folgenden einfachen Schritte erfolgen.

Gehen Sie zuerst zum Browser auf der linken Seite und folgen Sie den zuvor beschriebenen Schritten, um zu Ihrem Tisch zu gelangen. Klicken Sie nun mit der rechten Maustaste auf die Tabelle; Die folgenden Optionen werden angezeigt.

Optionen

Wählen Sie dort die Option Truncate. Es wird Folgendes auflisten:

Kürzen

Klicken Sie auf Kaskade abschneiden. Dadurch werden alle Zeilen der ausgewählten Tabelle und der Tabellen mit Fremdschlüsselbezug darauf gelöscht.

Dies fasst alle verschiedenen Möglichkeiten zusammen, alle Zeilen aus einer Tabelle in PostgreSQL zu löschen. Wir hoffen, dass Sie die Verwendung der Befehle DELETE und TRUNCATE zum Löschen aller Zeilen und einiger pgAdmin-Tools, die uns dies ermöglichen, gelernt haben.

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

Verwandter Artikel - PostgreSQL Table