MySQL DELETE-Abfrage: So löschen Sie eine Zeile aus der Tabelle

⚡ Intelligente Zusammenfassung

MySQL Die DELETE-Abfrage entfernt nicht mehr benötigte Zeilen aus einer Tabelle und gibt die Anzahl der betroffenen Zeilen zurück. Diese Ressource erklärt die DELETE-Syntax, die WHERE-Filterung, das Löschen mehrerer Zeilen mit IN sowie die sichereren Alternativen TRUNCATE und DROP.

  • 🗑️ Kernaussage: DELETE FROM `table_name` [WHERE condition] entfernt ganze Zeilen und gibt die Anzahl der gelöschten Zeilen zurück.
  • ⚠️ Ausgelassen WO: Wenn die WHERE-Klausel weggelassen wird, werden alle Zeilen in der Tabelle gelöscht. Filtern Sie daher immer vor der Ausführung.
  • 🎯 Targeted Entfernung: WHERE `movie_id` = 18 entfernt einen Datensatz, während WHERE `movie_id` IN (20,21) mehrere Datensätze in einer einzigen Anweisung entfernt.
  • 🔁 Irreversible Aktion: Gelöschte Daten können ohne eine Datensicherung nicht wiederhergestellt werden. Sichern Sie daher die Datenbank, bevor Sie den Befehl DELETE ausführen.
  • 📊 Zeilenebene-Gültigkeitsbereich: DELETE entfernt nur ganze Zeilen; zum Löschen eines einzelnen Spaltenwerts ist UPDATE mit NULL erforderlich.
  • LÖSCHEN vs. ABKÜRZEN vs. VERWERFEN: DELETE filtert Zeilen, TRUNCATE leert eine Tabelle sofort und DROP entfernt die Tabellenstruktur selbst.

Was ist die DELETE-Abfrage?

Das MySQL LÖSCHEN Die DELETE-Anweisung dient dazu, nicht mehr benötigte Zeilen aus einer Datenbanktabelle zu entfernen. Sie löscht die gesamte Zeile und gibt die Anzahl der gelöschten Zeilen zurück. Die DELETE-Anweisung ist hilfreich, wenn Sie temporäre oder veraltete Daten aus Ihrer Datenbank entfernen müssen.

Die DELETE-Abfrage in MySQL Mit dieser Funktion lassen sich mehrere Zeilen aus einer Tabelle in einem einzigen Durchlauf entfernen. Dies erweist sich als vorteilhaft, wenn Sie eine große Anzahl von Zeilen aus einer Datenbanktabelle löschen möchten.

Gelöschte Zeilen können nicht wiederhergestellt werden. Erstellen Sie daher immer eine Datensicherung, bevor Sie Daten löschen, damit die Datenbank bei Bedarf später wiederhergestellt und überprüft werden kann.

Wie man eine Zeile löscht MySQL

Nachdem der Zweck der Aussage geklärt ist, folgt als nächstes die Syntax. Um eine Zeile zu löschen in MySQL, wird die DELETE FROM-Anweisung verwendet:

DELETE FROM `table_name` [WHERE condition];

HIER:

  • LÖSCHEN AUS `table_name` erzählt die MySQL Server, um Zeilen aus der angegebenen Tabelle zu entfernen.
  • [WHERE-Bedingung] ist optional und dient dazu, einen Filter anzuwenden, der die Anzahl der von der DELETE-Abfrage betroffenen Zeilen einschränkt.

Besitzt das WHERE-Klausel wird nicht verwendet in der MySQL DELETE-Abfrage, dann alle Die Zeilen in einer bestimmten Tabelle werden gelöscht.

⚠️ Warnung: Führen Sie den Filter zunächst als SELECT-Anweisung aus. Wenn er genau die Zeilen zurückgibt, die Sie entfernen möchten, ist die entsprechende DELETE-Anweisung sicher. Die vollständige Syntax ist in der Dokumentation zu finden. MySQL DELETE-Anweisungshandbuch.

Beispiel von MySQL Abfrage löschen

Im nächsten Abschnitt wird ein kleiner Datensatz erstellt und anschließend wieder gelöscht.

Schritt 1: Beispieldaten einfügen

Bevor wir uns eingehender mit der SQL-Anweisung DELETE befassen, fügen wir einige Beispieldaten in die Tabelle „movies“ ein, mit denen wir arbeiten können.

INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

Durch Ausführen des obigen Skripts werden drei (3) Filme zur Filmtabelle hinzugefügt. Bevor wir fortfahren, listen wir alle Filme in unserer Tabelle auf.

SELECT * FROM `movies`;

Die Ausführung des obigen Skripts liefert folgende Ergebnisse. Die drei neu eingefügten Zeilen sind hervorgehoben.

movie_id Titel Regisseur Jahr_veröffentlicht Kategorie ID
1 Fluch der Karibik 4 Rob Marshall 2011 1
2 Sarah Marshal vergessen Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Papas kleine Mädchen NULL 2007 8
6 Engel und Dämonen NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey moonERS Johann Schulz 2005 8
16 67 % schuldig NULL 2012 NULL
18 Der große Diktator Charlie Chaplin 1940 7
19 Beispielvideo Anonym NULL 8
20 Film 3 John Brown 1920 8

Schritt 2: Eine einzelne Zeile löschen

Angenommen, die Myflix-Videothek möchte „Der große Diktator“ nicht mehr verleihen und ihn aus der Datenbank entfernen lassen. Die Film-ID ist 18, daher löscht das folgende Skript die entsprechende Zeile.

DELETE FROM `movies` WHERE `movie_id` = 18;

Ausführen des obigen Skripts in MySQL Werkbank Der Abruf in der Myflix-Datenbank löscht den Film mit der ID 18 aus der Tabelle.

Schauen wir uns nun den aktuellen Stand der Filmtabelle an.

SELECT * FROM `movies`;
movie_id Titel Regisseur Jahr_veröffentlicht Kategorie ID
1 Fluch der Karibik 4 Rob Marshall 2011 1
2 Sarah Marshal vergessen Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Papas kleine Mädchen NULL 2007 8
6 Engel und Dämonen NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey moonERS Johann Schulz 2005 8
16 67 % schuldig NULL 2012 NULL
19 Beispielvideo Anonym NULL 8
20 Film 3 John Brown 1920 8

Anmerkungen:

  • Der Film mit der ID 18 wird nicht mehr im Abfrageergebnis angezeigt.
  • Mit DELETE können Sie keine einzelne Spalte aus einer Tabelle löschen. Die Anweisung entfernt eine ganze Zeile. Um ein einzelnes Feld zu löschen, verwenden Sie … UPDATE-Abfrage Dadurch wird die Spalte auf NULL gesetzt.

Schritt 3: Mehrere Zeilen mit IN löschen

Angenommen, wir haben eine Liste von Filmen, die wir löschen möchten. Anstatt für jede Zeile eine separate Anweisung auszuführen, können wir die WHERE-Klausel mit dem IN-Operator kombinieren.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

Durch Ausführen des obigen Skripts werden die Filme mit den IDs 20 und 21 in einem Durchgang aus unserer Filmtabelle gelöscht.

LÖSCHEN vs. ABKÜRZEN vs. EINFÜGEN MySQL

LÖSCHEN ist nicht die einzige Möglichkeit, Daten zu entfernen MySQLAnfänger greifen oft darauf zurück, obwohl ein schnellerer Befehl besser passen würde. Daher vergleicht die folgende Tabelle die drei Entfernungsbefehle.

Funktion LÖSCHEN KÜRZEN DROP
Befehlstyp DML DDL DDL
WHERE-Klausel Unterstützt Nicht unterstützt Nicht unterstützt
Was wird entfernt? Ausgewählte Zeilen Alle Zeilen Zeilen- und Tabellenstruktur
Rollback Möglich innerhalb einer Transaktion Nicht möglich (implizites Commit) Nicht möglich (implizites Commit)
AUTO_INCREMENT Der Zähler wird beibehalten Der Zähler wird auf den Startwert zurückgesetzt. Der Zähler wird mit dem Tisch entfernt.
Geschwindigkeit auf großen Tischen Langsam (Reihe für Reihe) Sehr schnelle Sehr schnelle

Verwenden Sie die LÖSCHEN-Taste, wenn Sie einen Filter oder die Möglichkeit zum Zurücksetzen benötigen. TABELLE KÜRZEN Wenn Sie eine Tabelle schnell leeren und ihren AUTO_INCREMENT-Zähler zurücksetzen möchten, verwenden Sie DROP nur, wenn die Tabelle selbst nicht mehr benötigt wird, da dadurch die Definition zusammen mit den Daten gelöscht wird.

Häufig gestellte Fragen

Nur innerhalb einer offenen Transaktion. Führen Sie START TRANSACTION aus, anschließend DELETE und dann ROLLBACK, um die Aktion rückgängig zu machen. Nach COMMIT oder bei aktiviertem Autocommit sind die Zeilen unwiederbringlich verloren und können nur durch eine Sicherung wiederhergestellt werden.

Verwenden Sie eine DELETE-Anweisung für mehrere Tabellen mit einem JOINGeben Sie beide Tabellen vor dem Schlüsselwort FROM an. Alternativ können Sie den Fremdschlüssel mit ON DELETE CASCADE definieren, sodass untergeordnete Zeilen automatisch entfernt werden, wenn die übergeordnete Zeile gelöscht wird.

Der sichere Update-Modus ist standardmäßig aktiviert in MySQL WerkbankEs lehnt alle DELETE-Anweisungen ab, deren WHERE-Klausel keine Schlüsselspalte verwendet, und verhindert so versehentliche Löschungen ganzer Tabellen. Deaktivieren Sie diese Funktion unter Bearbeiten > Einstellungen > SQL-Editor.

Ja. KI-Assistenten übersetzen eine Anfrage in natürlicher Sprache in die DELETE-Syntax und können die WHERE-Klausel erklären. Überprüfen Sie den generierten Filter immer zuerst anhand einer SELECT-Anweisung, da ein KI-Modell Ihre Live-Daten nicht einsehen kann.

Nein. Lassen Sie die KI die Anweisung entwerfen, führen Sie sie aber vorher selbst auf einer Sicherungs- oder Testkopie aus. Eine fehlende WHERE-Klausel löscht alle Zeilen, und kein KI-Tool kann dies rückgängig machen, sobald die Transaktion abgeschlossen ist.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: