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.

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.
