Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL DELETE

Die `DELETE`-Anweisung in PostgreSQL wird verwendet, um Zeilen aus einer Tabelle zu entfernen. Sie ermöglicht die Löschung bestimmter Datensätze auf der Grundlage einer Bedingung oder aller Datensätze, wenn keine Bedingung angegeben wurde.

Verwendung

Die Anweisung `DELETE` wird verwendet, wenn du Daten aus einer Tabelle entfernen musst. Sie wird häufig verwendet, um veraltete oder falsche Daten zu löschen.

DELETE FROM table_name
[WHERE condition];

In dieser Syntax gibt `DELETE FROM tabellenname` die Tabelle an, aus der du Zeilen löschen willst, während die optionale `WHERE-Bedingung` bestimmt, welche Zeilen entfernt werden sollen.

Beispiele

1. Alle Zeilen löschen

DELETE FROM users;

In diesem Beispiel werden alle Datensätze aus der Tabelle `Benutzer` gelöscht und die Tabelle somit geleert.

2. Löschen mit einer Bedingung

DELETE FROM orders
WHERE order_date < '2023-01-01';

Hier entfernt der Befehl alle Zeilen aus der Tabelle "Bestellungen", deren Bestelldatum vor dem 1. Januar 2023 liegt.

3. Löschen mit einer Unterabfrage

DELETE FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE name = 'HR');

In diesem Beispiel werden Mitarbeiter gelöscht, die zur Personalabteilung gehören, indem eine Unterabfrage verwendet wird, um die relevanten "department_id" zu identifizieren.

Tipps und bewährte Praktiken

  • Mit Vorsicht verwenden. Achte immer darauf, dass die `WHERE`-Klausel korrekt ist, um ungewollten Datenverlust zu vermeiden.
  • Daten sichern. Ziehe in Erwägung, eine Sicherungskopie deiner Tabelle oder Datenbank zu erstellen, bevor du größere Löschungen vornimmst.
  • Überprüfe das mit SELECT. Führe eine `SELECT`-Anweisung mit der gleichen `WHERE`-Bedingung aus, um zu prüfen, welche Zeilen gelöscht werden.
  • Verwende `RETURNING`. Verwende bei Bedarf die Klausel `RETURNING`, um die gelöschten Zeilen auszugeben, was für Überprüfungs- oder Audit-Zwecke nützlich sein kann.
  • Löschung begrenzen. Bei Tabellen mit hohem Volumen solltest du das Löschen in Batches in Betracht ziehen, um Tabellensperren und Leistungseinbußen zu minimieren.
  • Ziehe CASCADE in Betracht. Wenn du Zeilen aus einer Tabelle mit Fremdschlüssel-Beschränkungen löschst, kannst du die Option `CASCADE` verwenden, um automatisch alle abhängigen Zeilen in verwandten Tabellen zu löschen.
  • Gleichzeitigkeitsbehandlung. Sei dir bewusst, dass gleichzeitige `DELETE`-Operationen zu Wettlaufsituationen führen können. Verwende Transaktionen oder geeignete Sperrmechanismen, um gleichzeitige Löschungen zu verwalten.
  • Überlegungen zur Leistung. Optimiere `DELETE`-Operationen, indem du sicherstellst, dass Indizes für die Bedingungen in der `WHERE`-Klausel vorhanden sind, besonders in großen Tabellen, um die Leistung zu verbessern.