Mit Post­greS­QL DELETE können Inhalte aus einer Tabelle gelöscht werden. Der Befehl lässt sich durch Be­din­gun­gen so spe­zi­fi­zie­ren, dass nur bestimmte Zeilen für die Löschung in Frage kommen. Da sich die Ent­fer­nung nicht rück­gän­gig machen lässt, sollte der Befehl nur sehr vor­sich­tig ein­ge­setzt werden.

Was ist Post­greS­QL DELETE?

Der Befehl DELETE wird in Post­greS­QL verwendet, um Einträge aus einer Tabelle zu löschen. Mit der Bedingung WHERE können Sie dabei bestimmte Zeilen auswählen, aus denen Inhalte entfernt werden sollen. Ver­zich­ten Sie bei der Nutzung des Kommandos auf die Klausel WHERE, werden alle Inhalte aus der be­tref­fen­den Tabelle un­wie­der­bring­lich gelöscht. Aus diesem Grund sollten Sie den Befehl nur mit größter Vorsicht anwenden.

Dedicated Server
De­di­zier­te Server mit mo­derns­ten Pro­zes­so­ren
  • 100 % En­ter­pri­se-Hardware
  • Kon­fi­gu­rier­ba­re Hardware-Aus­stat­tung
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren

Post­greS­QL DELETE: Syntax und Funk­ti­ons­wei­se

Die Syntax von Post­greS­QL DELETE hat folgende Grund­struk­tur:

DELETE FROM name_der_tabelle
WHERE [Bedingung];
post­gres­ql

Das Keyword DELETE FROM initiiert die Löschung in der an­ge­ge­be­nen Tabelle. Mit der Bedingung WHERE können Sie spe­zi­fi­zie­ren, in welchen Zeilen Inhalte entfernt werden sollen. Möchten Sie mehrere Be­din­gun­gen be­rück­sich­ti­gen, können Sie diese mit AND oder OR auflisten.

Hinweis

Bevor Sie Daten löschen, sollten Sie si­cher­stel­len, dass Sie eine aktuelle Sicherung der Datenbank besitzen oder den Lösch­pro­zess in einer Trans­ak­ti­on ausführen. Auf diese Weise können Sie ver­hin­dern, dass wichtige Daten ver­lo­ren­ge­hen, wenn das Kommando ver­se­hent­lich falsch aus­ge­führt wird.

Alle Inhalte einer Tabelle entfernen

Die Funk­ti­ons­wei­se von DELETE in Post­greS­QL lässt sich am ein­fachs­ten mit einem prak­ti­schen Beispiel erläutern. Dafür nutzen wir den Befehl CREATE TABLE, um eine neue Post­greS­QL-Tabelle namens „Kun­den­lis­te“ zu erstellen. Mit INSERT INTO füllen wir diese dann mit ver­schie­de­nen Inhalten. Die Tabelle verfügt über drei Spalten namens „ID“, „Name“ und „Ort“ und erhält zunächst vier Einträge. So sieht sie aus:

|ID|Name|Ort|
|-|-|-|
|1|Schulz|Berlin|
|2|Meyer|Hamburg|
|3|Schmidt|Dortmund|
|4|Schulz|Stuttgart|
post­gres­ql

Möchten wir nun die Tabelle bei­be­hal­ten, dabei aber sämtliche Inhalte löschen, verwenden wir Post­greS­QL DELETE ohne zu­sätz­li­che Bedingung. Der Befehl sieht für unser Beispiel dann so aus:

DELETE FROM Kundenliste;
post­gres­ql

Eine Zeile löschen mit Post­greS­QL DELETE

Häufiger werden Sie al­ler­dings in der Situation sein, dass Sie lediglich eine bestimmte Zeile entfernen möchten. Auch dies wird mit Post­greS­QL DELETE erledigt. Dafür nutzen wir den Befehl mit einer Klausel WHERE. Für unser Beispiel möchten wir den Kunden „Meyer“ mit der ID „2“ löschen. Der passende Code sieht dann so aus:

DELETE FROM Kundenliste
WHERE ID = 2;
post­gres­ql

Zeilen mit mehreren Be­din­gun­gen spe­zi­fi­zie­ren

Ins­be­son­de­re bei langen Tabellen kann es doppelte und damit nicht ein­deu­ti­ge Einträge geben. Möchten Sie si­cher­ge­hen, dass aus­schließ­lich die ge­wünsch­te Zeile gelöscht wird, können Sie Post­greS­QL DELETE mit mehreren Be­din­gun­gen verwenden. In unserem Beispiel haben wir zwei Kunden namens „Schulz“ und möchten lediglich den zweiten Eintrag entfernen. Daher kom­bi­nie­ren wir zwei Be­din­gun­gen. Der Code dafür ist dieser:

DELETE FROM Kundenliste
WHERE Name = 'Schulz'
AND ID >= 3;
post­gres­ql

Auf diese Weise werden alle Zeilen gelöscht, in denen der Name „Schulz“ und die ID größer oder gleich „3“ ist. Da der erste Eintrag mit dem Namen eine ID-Nummer hat, die kleiner als „3“ ist, bleibt dieser Eintrag auch nach dem Lösch­be­fehl in der Datenbank.

Zum Hauptmenü