Was ist die DELETE-Abfrage?
Mit dem Befehl MySQL DELETE werden nicht mehr benötigte Zeilen aus den Datenbanktabellen gelöscht. Es löscht die gesamte Zeile aus der Tabelle und gibt die Anzahl der gelöschten Zeilen zurück. Der Befehl Löschen ist praktisch, um temporäre oder veraltete Daten aus Ihrer Datenbank zu löschen.
Die Abfrage "Löschen" in MySQL kann mehr als eine Zeile aus einer Tabelle in einer einzelnen Abfrage löschen. Dies erweist sich als vorteilhaft, wenn eine große Anzahl von Zeilen aus einer Datenbanktabelle entfernt wird.
Sobald eine Löschzeile in der MySQL-Zeile gelöscht wurde, kann sie nicht wiederhergestellt werden. Es wird daher dringend empfohlen, vor dem Löschen von Daten aus der Datenbank Datenbanksicherungen durchzuführen. Auf diese Weise können Sie die Datenbank wiederherstellen und die Daten später anzeigen, falls dies erforderlich sein sollte.
So löschen Sie eine Zeile in MySQL
Um eine Zeile in MySQL zu löschen, wird die Anweisung DELETE FROM verwendet:
DELETE FROM `table_name` [WHERE condition];
HIER
- DELETE FROM `table_name` weist den MySQL-Server an, Zeilen aus der Tabelle zu entfernen.
- [WHERE-Bedingung] ist optional und wird verwendet, um einen Filter einzufügen, der die Anzahl der von der MySQL DELETE-Zeilenabfrage betroffenen Zeilen einschränkt.
Wenn die WHERE-Klausel in der MySQL DELETE-Abfrage nicht verwendet wird, werden alle Zeilen in einer bestimmten Tabelle gelöscht.
Beispiel für eine MySQL-Löschabfrage
Bevor wir näher auf den Befehl DELETE eingehen, fügen wir einige Beispieldaten in die Filmtabelle ein, mit denen gearbeitet werden soll.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 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 weiter in unsere Lektion gehen, lassen Sie uns alle Filme in unsere Tabelle aufnehmen. Das unten gezeigte Skript macht das.
SELECT * FROM `movies`;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse.
movie_id | itle | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
18 | The Great Dictator | Chalie Chaplie | 1920 | 7 |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
Nehmen wir an, die Myflix-Videobibliothek möchte "The Great Dictator" nicht mehr an ihre Mitglieder vermieten und möchte, dass es aus der Datenbank entfernt wird. Die Film-ID ist 18, wir können das unten gezeigte Skript verwenden, um die Zeile aus der Filmtabelle zu löschen.
DELETE FROM `movies` WHERE `movie_id` = 18;
Durch Ausführen des obigen Skripts in MySQL WorkBench gegen Myflix wird der Film mit der ID 18 aus der Datenbanktabelle gelöscht.
Sehen wir uns den aktuellen Status der Filmtabelle an.
SELECT * FROM `movies`;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
HINWEIS:
- Der Film mit der ID 18 wurde in der Abfrageergebnismenge nicht zurückgegeben.
- Sie können keine einzelne Spalte für eine Tabelle löschen. Sie können eine ganze Zeile löschen.
Angenommen, wir haben eine Liste der Filme, die wir löschen möchten. Wir können die WHERE-Klausel zusammen mit IN verwenden.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Durch Ausführen des obigen Skripts werden Filme mit den IDs 20 und 21 aus unserer Filmtabelle gelöscht.
Zusammenfassung
- Mit dem Befehl delete werden nicht mehr benötigte Daten aus einer Tabelle entfernt.
- Die "WHERE-Klausel" wird verwendet, um die Anzahl der von der DELETE-Abfrage betroffenen Zeilen zu begrenzen.
- Sobald Daten gelöscht wurden, können sie nicht wiederhergestellt werden. Es wird daher dringend empfohlen, vor dem Löschen von Daten Sicherungen durchzuführen.