Löschen Sie alle Tabellenzeilen in PostgreSQL
-
Löschen Sie alle Zeilen mit dem Befehl
TRUNCATE
in PostgreSQL -
Löschen Sie alle Zeilen mit dem Befehl
DELETE
in PostgreSQL -
Alle Zeilen in PostgreSQL mit
pgAdmin
löschen - Alle Zeilen einer referenzierten Tabelle in PostgreSQL löschen
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:
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:
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:
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:
Klicken Sie auf die Option 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:
Klicken Sie auf die Option Abschneiden
. Klicken Sie unter den verfügbaren Optionen erneut auf Truncate
.
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.
Wählen Sie dort die Option Truncate
. Es wird Folgendes auflisten:
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.
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