mysql delete statement delete command syntax
In diesem Lernprogramm wird erläutert, wie Sie mit der MySQL DELETE-Anweisung Daten aus einer Tabelle löschen oder die gesamte Tabelle und den Unterschied zwischen den Befehlen 'Abschneiden' und 'Löschen' löschen:
In MySQL ist DELETE bekanntlich eine Data Manipulation Language oder DML.
Wie der Name schon sagt, werden mit dem Befehl Zeilen aus der Tabelle gelöscht. Mit diesem Befehl können wir eine oder mehrere unerwünschte Zeilen in einer einzigen Transaktion löschen. Es gibt mehrere Möglichkeiten, Datensätze mit dem Befehl DELETE aus einer Tabelle zu löschen.
beste Anime-Sites, um Anime kostenlos anzuschauen
In diesem Tutorial werden wir all dies zusammen mit einfachen Beispielen ausführlich diskutieren.
Was du lernen wirst:
- MySQL DELETE Befehl
- Unterschied zwischen TRUNCATE- und DELETE-Anweisungen
- Referenzielle Integrität und ihre Auswirkungen auf DELETE
- Häufig gestellte Fragen und Antworten
- Fazit
MySQL DELETE Befehl
Es ist ein wichtiger Faktor zu beachten, bevor wir fortfahren. Eine oder mehrere Zeilen, die wir mit dem Befehl DELETE löschen, können niemals abgerufen werden.
Um Szenarien zu vermeiden, in denen eine Zeile versehentlich gelöscht wird, ist es daher ratsam, vor dem Ausführen der DELETE-Anweisung eine Sicherungskopie der Tabelle zu erstellen. Wir können diese Sicherung später verwenden, um die Tabelle im Fehlerfall wiederherzustellen.
Hinweis: Wir verwenden MySQL Version 8.0. Sie können es von herunterladen Hier .
MySQL Delete Syntax:
DELETE (LOW_PRIORITY) (QUICK) (IGNORE) FROM tablename(.*) (, tablename(.*)) (WHERE condition) (ORDER BY) (LIMIT row_count) ;
Syntax Erläuterung:
- Die Syntax beginnt mit dem Schlüsselwort 'DELETE FROM' und informiert den MySQL Server über die Art der auszuführenden Aktivität. Dies ist ein obligatorisches Schlüsselwort und kann nicht weggelassen werden.
- Als nächstes kommt der Name der Tabelle, in der die DELETE-Operation ausgeführt werden muss. Dies ist ebenfalls obligatorisch und kann nicht weggelassen werden. Wir können hier einen oder mehrere Tabellennamen erwähnen.
- Als nächstes können wir jede Bedingung erwähnen, die die Berechtigung der zu löschenden Zeilen steuert. Dies ist eine optionale Klausel. Das Schlüsselwort hier ist WO.
- Auf die WHERE-Klausel folgt die ORDER BY-Klausel, die erzwingt, dass die Zeilen in einer bestimmten Reihenfolge (aufsteigend oder absteigend) in einer oder mehreren Spalten gelöscht werden. Dies ist eine optionale Klausel.
- Die LIMIT-Klausel folgt der ORDER BY-Klausel. Die Anzahl der Zeilen, die die DELETE-Anweisung aus der Tabelle entfernen kann, ist begrenzt.
Modifikatoren in der DELETE-Anweisung
# 1) LOW_PRIORITY:
Dieser Modifikator weist die MySQL Engine an, die Ausführung der DELETE-Anweisung so lange zu verzögern, bis keine Verbindungen mehr aus der Tabelle gelesen werden, aus der wir löschen möchten.
Dies hilft dabei, Konsistenz über alle anderen Vorgänge zu erreichen, die für diese Tabelle ausgeführt werden. Dies hilft auch dabei, Probleme beim Sperren von Tabellen zu vermeiden.
# 2) SCHNELL:
Immer wenn wir eine Zeile löschen, wird auch der entsprechende Index gelöscht. Das Zurückfordern des Speicherplatzes zum Zeitpunkt der Ausführung der DELETE-Anweisung beansprucht die Prozessorzeit. Wenn wir das Schlüsselwort QUICK verwenden, bleibt der entsprechende Indexbereich ungenutzt und kann verwendet werden, wenn neue Datensätze eingefügt werden, die dem zuvor gelöschten Indexbereich entsprechen.
Zum Beispiel, Betrachten Sie eine Mitarbeitertabelle, in der die Mitarbeiter-ID der Index ist. Wenn ein Mitarbeiter eine Organisation verlässt, müssen wir den entsprechenden Datensatz löschen. Wenn wir die QUICK-Klausel verwenden, bleibt der entsprechende Indexbereich ungenutzt.
Wenn ein neuer Mitarbeiter beitritt, erhält er eine neue Mitarbeiternummer und nicht die gleiche Nummer der Person, die das Unternehmen verlassen hat. In solchen Beispielen ist es nicht ratsam, QUICK zu verwenden.
MYSQL DELETE Beispiel
Im Folgenden finden Sie eine Beispieltabelle, die in MYSQL erstellt wurde.
Schemaname: Pazifik
Tabellenname: Angestellte
Spaltennamen:
empNum; Enthält ganzzahlige Werte für die Mitarbeiternummer.
Nachname: Enthält Varchar-Werte für den Nachnamen des Mitarbeiters.
Vorname: Enthält Varchar-Werte für den Vornamen des Mitarbeiters.
Email: Enthält Varchar-Werte für die E-Mail-ID des Mitarbeiters.
deptNum; Enthält varchar für die Abteilungs-ID, zu der ein Mitarbeiter gehört.
Gehalt: Enthält Dezimalwerte des Gehalts jedes Mitarbeiters.
Anfangsdatum: Enthält die Datumswerte für das Beitrittsdatum des Mitarbeiters.
Schemaname: Pazifik
Tabellenname: Mitarbeitergeschichte
Spaltennamen:
empNum; Enthält die ganzzahligen Werte für die Mitarbeiternummer.
Nachname: Enthält Varchar-Werte für den Nachnamen des Mitarbeiters.
Vorname: Enthält Varchar-Werte für den Vornamen des Mitarbeiters.
Email: Enthält Varchar-Werte für die E-Mail-ID des Mitarbeiters.
deptNum; Enthält varchar für die Abteilungs-ID, zu der ein Mitarbeiter gehört.
Gehalt: Enthält Dezimalwerte des Gehalts jedes Mitarbeiters.
Anfangsdatum: Enthält Datumswerte für das Beitrittsdatum des Mitarbeiters.
Schemaname: Pazifik
Tabellenname: Abteilungen
Spaltennamen:
deptNum; Enthält varchar für die Abteilungs-ID innerhalb einer Organisation.
Stadt: Enthält den Namen der Stadt, in der die Abteilungen arbeiten.
Land: Enthält den Namen des Landes, das der Stadt entspricht.
Bonus: Enthält den prozentualen Wert des Bonus.
MySQL Einzelne Zeile löschen
Die erste und einfachere Möglichkeit, Datensätze aus der Tabelle zu löschen, besteht darin, die Datensätze einzeln zu löschen. Dabei wird eine sehr starke WHERE-Klausel verwendet, die sicherstellt, dass nur ein geeigneter Datensatz gelöscht wird. Dies könnte weiter verwendet werden, um eine Reihe ähnlicher Arten von Zeilen aus der Tabelle zu löschen.
Lassen Sie uns die delete-Anweisung und ihre Ausführung im Detail durchgehen.
Hier werden wir versuchen, einen Mitarbeiter namens 'Chris Nolan' mit der Mitarbeiternummer 1013 zu entfernen.
Wie in der obigen Abbildung dargestellt, wurde die DELETE-Anweisung erfolgreich ausgeführt und eine Zeile aus der Tabelle des Mitarbeiters gelöscht.
Das Ausgabe Die folgende Anweisung zeigt den Zeitpunkt, zu dem die Anweisung ausgeführt wurde, die ausgeführte MySQL-Anweisung und die Anzahl der betroffenen Zeilen.
Bitte beachten Sie die WHERE-Klausel hier. Wenn die WHERE-Klausel falsch ist oder Sie keine WHERE-Klausel haben, kann dies zu Datenverlust führen. Um solche Situationen zu vermeiden, werden in der Produktion regelmäßig Datensicherungen oder -entladungen durchgeführt.
Um die Ausgabe dieser DELETE-Anweisung zu überprüfen, führen Sie die SELECT-Anweisung für diese Tabelle mit dem empNum als 1013 aus.
Die Ausgabeergebnisse zeigen den NULL-Wert für alle Spalten, was bedeutet, dass für ein solches empNum kein Datensatz vorhanden ist. Die Ausgabe der folgenden Abfrage zeigt, dass 0 Zeilen zurückgegeben wurden, was bedeutet, dass der Datensatz durch die Ausführung der obigen DELETE-Anweisung gelöscht wurde.
Abfrage:
DELETE FROM employees WHERE empNum = 1013 ;
Tabellenschnappschuss nach:
empNum | Nachname | Vorname | deptNum | Gehalt | |
---|---|---|---|---|---|
7 | Dies ist im Vergleich zum Löschen ganzer Daten aus der Tabelle relativ langsamer als TRUNCATE. | Dies ist relativ schneller als DELETE, wenn ganze Daten aus der Tabelle gelöscht werden. | |||
NULL | NULL | NULL | NULL | NULL | NULL |
MySQL DELETE Using ORDER BY und LIMIT Klausel
ORDER BY und LIMIT sind zwei Klauseln, die wir oben besprochen haben. Ersteres hilft bei der Entscheidung über die Reihenfolge, in der die Datensätze gelöscht werden sollen. Löschen Sie entweder Datensätze mit empNum in aufsteigender Reihenfolge oder löschen Sie Datensätze mit dem Gehalt in absteigender Reihenfolge. Letzteres hilft bei der Einschränkung der Anzahl der Datensätze, die diese Transaktion löschen kann.
Zum Beispiel, wenn wir nur 2 Mitarbeiter der Abteilung 4 löschen wollen, die hohe Gehaltsempfänger sind. Dann gibt es drei Teile zu dieser Abfrage.
- Zuerst, Wir müssen die Mitarbeiter aus Abteilung 4 entfernen. Dies wird durch eine WHERE-Klausel geregelt.
- Nächster, Wir müssen Mitarbeiter entlassen, die hohe Gehälter verdienen. Dies wird durch die ORDER BY-Klausel in der Gehaltsspalte in absteigender Reihenfolge behandelt.
- Zuletzt, Wir müssen nur zwei Mitarbeiter reinigen. Dies wird durch die LIMIT-Klausel geregelt.
Schauen wir uns die DELETE-Abfrage an und sehen uns die Ergebnisse an. Bevor wir dies tun, identifizieren wir zunächst die genauen Datensätze, die wir löschen möchten. Wir werden die obigen Bedingungen mit einer SELECT-Anweisung verwenden, um die Datensätze abzurufen, die wir löschen möchten, und später dieselbe Abfrage ausführen, um zu überprüfen, ob diese Datensätze gelöscht wurden oder nicht.
In der obigen SELECT-Abfrage haben wir alle drei oben genannten Bedingungen mit der WHERE-, ORDER BY- und LIMIT-Klausel erfüllt. Die Abfrage ergab 2 Datensätze, einen mit empNum 1010 und einen mit 1007. Jetzt führen wir die DELETE-Abfrage aus, um sicherzustellen, dass diese beiden Datensätze gelöscht werden.
Wie in der obigen Abbildung dargestellt, wurde die DELETE-Anweisung erfolgreich ausgeführt und zwei Zeilen aus der Tabelle des Mitarbeiters gelöscht. Das Ausgabe Die folgende Anweisung zeigt den Zeitpunkt, zu dem die Anweisung ausgeführt wurde, die ausgeführte MySQL-Anweisung und die Anzahl der betroffenen Zeilen.
Um die Ausgabe dieser DELETE-Anweisung zu überprüfen, führen Sie SELECT für empNum 1010 und 1007 aus. Wir können nicht dieselbe SELECT-Abfrage wie oben verwenden, die die anderen Mitarbeiter unter Abteilung 4 anzeigen würde.
bestes Programm, um Malware loszuwerden
Die Ausgabeergebnisse zeigen den NULL-Wert für alle Spalten, was bedeutet, dass für solche Mitarbeiternummern kein Datensatz vorhanden ist. Das Ausgabe der folgenden Abfrage zeigt, dass 0 Zeilen zurückgegeben wurden, was bedeutet, dass der Datensatz durch die Ausführung der obigen DELETE-Anweisung gelöscht wurde.
Abfrage:
DELETE FROM employees WHERE deptNum = 4 ORDER BY salary DESC LIMIT 2 ;
Tabellenschnappschuss nach:
empNum | Nachname | Vorname | deptNum | Gehalt | |
---|---|---|---|---|---|
NULL | NULL | NULL | NULL | NULL | NULL |
MySQL DELETE mit Select-Klausel
Als Nächstes werden wir die Verwendung der SELECT-Klausel durchgehen, während Datensätze aus einer Tabelle gelöscht werden.
Stellen Sie sich das folgende Szenario vor:
Wir haben zwei Sätze von Tabellen: Mitarbeiter und Abteilungen. deptNum ist wie ein Primärschlüssel in der Tabelle der Abteilung und ein Fremdschlüssel in der Tabelle des Mitarbeiters. Das heißt, wenn einem Mitarbeiter eine Abteilung zugewiesen ist, muss er aus einer der Abteilungen in der Tabelle der Abteilungen stammen.
Jetzt müssen wir die Datensätze aus der Tabelle der Abteilung löschen, für die bisher kein Mitarbeiter zugewiesen wurde. Wir können dies tun, indem wir eine SELECT-Klausel in der Unterabfrage einer DELETE-Abfrage haben.
Lassen Sie uns zunächst die Datensätze identifizieren, die wir löschen möchten:
Die obige SELECT-Abfrage enthält eine Unterabfrage.
Die Abfrage funktioniert wie folgt:
Die Abfrage ruft alle Datensätze aus der Tabelle der Abteilung ab, in denen die deptNum nicht in der Tabelle des Mitarbeiters vorhanden ist. Der Join wird in der Unterabfrage in der deptNum der beiden Tabellen ausgeführt.
Führen Sie nun die DELETE-Abfrage aus und prüfen Sie, ob wir diese beiden Datensätze aus der Abteilungstabelle löschen können, da diesen Abteilungen kein Mitarbeiter zugewiesen ist.
Wie im obigen Bild dargestellt, hat die Löschanweisung 2 Zeilen aus den Abteilungstabellen gelöscht, denen kein Mitarbeiter zugewiesen ist.
Um die Ausgabe dieser DELETE-Anweisung zu überprüfen, führen wir SELECT für die Tabelle aus und sehen, was wir in der Ausgabe haben.
Die Ausgabemeldung der obigen Überprüfungsabfrage lautet '0 Zeile (n) zurückgegeben'. Dies bedeutet, dass die Zeilen mit deptNum 6 und 7 gelöscht werden. Die Ausgabe zeigt auch keine Datensätze an, anstatt NULL-Werte anzuzeigen, da die Datensätze gelöscht wurden.
Abfrage:
DELETE FROM departments WHERE NOT EXISTS (SELECT deptNum FROM employees WHERE departments.deptNum = employees.deptNum ) ;
MySQL DELETE Gesamte Daten aus Tabelle
Als nächstes betrachten wir das Szenario, in dem wir alle Zeilen oder Datensätze aus einer Tabelle löschen müssen.
In der Produktionssituation kann es vorkommen, dass Sie niemals auf eine solche Situation stoßen. Dies ist jedoch in dem Entwicklungsbereich erforderlich, in dem Sie Ihren Code mit mehreren verschiedenen Szenarien testen müssen und möglicherweise einen neuen Satz von Testdaten neu erstellen möchten, indem Sie die in der Tabelle vorhandenen Datensätze löschen.
Schauen wir uns zunächst die Daten an, die wir löschen möchten. Wir werden versuchen, Daten aus der Tabelle employee_history zu löschen.
Nachstehend sind die aktuell in der Tabelle vorhandenen Daten aufgeführt.
Hier haben wir 18 Zeilen in der Tabelle employee_history. Lassen Sie uns nun alle diese Elemente in einer einzigen Transaktion löschen. Die Abfrage ähnelt fast der, die wir im ersten Abschnitt besprochen haben. Die einzige Änderung besteht darin, dass wir die WHERE-Klausel aus der Abfrage entfernen müssen, damit die Anzahl der zu löschenden Zeilen nicht eingeschränkt wird.
Wie im obigen Bild dargestellt, wurde die Löschanweisung erfolgreich ausgeführt und alle 18 Zeilen aus der Tabelle employee_history gelöscht. Die folgende Ausgabeanweisung zeigt den Zeitpunkt der Ausführung der Anweisung, die ausgeführte MySQL-Anweisung und die Anzahl der betroffenen Zeilen.
Um die Ausgabe dieser DELETE-Anweisung zu überprüfen, führen wir SELECT für die Tabelle aus und sehen, was wir in der Ausgabe haben.
Die Ausgabeergebnisse zeigen den NULL-Wert für alle Spalten, was bedeutet, dass für solche Mitarbeiternummern kein Datensatz vorhanden ist. Die Ausgabe der folgenden Abfrage zeigt, dass 0 Zeilen zurückgegeben wurden, was bedeutet, dass alle Datensätze durch die Ausführung der obigen DELETE-Anweisung gelöscht wurden.
Abfrage:
DELETE FROM employees_history ;
Tabellenschnappschuss nach:
empNum | Nachname | Vorname | deptNum | Gehalt | |
---|---|---|---|---|---|
NULL | NULL | NULL | NULL | NULL | NULL |
MySQL DELETE Gesamte Tabelle
Nun schauen wir uns das Szenario an, in dem wir die Tabelle selbst löschen müssen. In SQL-Begriffen nennen wir es DROP die Tabelle. Es spielt keine Rolle, ob die Tabelle Daten enthält oder nicht. Die Tabelle wird einfach zusammen mit den Daten, falls vorhanden, gelöscht.
Im obigen Abschnitt haben wir Daten aus der Tabelle employee_history gelöscht. In diesem Abschnitt wird die Tabelle employee_history selbst gelöscht.
Es folgt der Befehl zusammen mit seiner Ausgabe:
Wie im obigen Bild dargestellt, wurde die DROP-Anweisung erfolgreich ausgeführt und die Tabelle employee_history aus dem Systemkatalog der MySQL-Datenbank gelöscht.
Wenn Sie sich die Nachricht ansehen, wird '0 betroffene Zeile (n)' angezeigt. Dies liegt daran, dass wir alle 18 Zeilen im vorherigen Abschnitt gelöscht hatten. Wenn diese Tabelle Zeilen hätte, wäre diese Anzahl von Zeilen betroffen, was bedeutet, dass sie gelöscht wird.
Um die Ausgabe dieser DROP-Anweisung zu überprüfen, führen wir SELECT für die Tabelle aus und sehen, was in der Ausgabe enthalten ist.
Die Ausgabemeldung der obigen Überprüfungsabfrage besagt, dass die Tabelle nicht vorhanden ist. Dies bestätigt unsere Ausführung der obigen DROP-Anweisung, um die Tabelle zu löschen.
Abfrage:
DROP TABLE employees_history ;
MySQL-Befehl zum Abschneiden
Wir haben bereits das Löschen aller Datensätze aus der Tabelle mit dem Befehl DELETE erörtert. Dasselbe könnte auch mit der Anweisung TRUNCATE erreicht werden.
In diesem Beispiel erstellen wir die Tabelle employee_history neu und füllen sie erneut mit Daten. T. Im Folgenden sind die beiden Abfragen aufgeführt, die ausgeführt wurden, um die Tabelle neu zu erstellen und neu zu füllen:
Abfrage:
osi-Modellgeräte verwenden jede Schicht
CREATE TABLE employees_history LIKE employees ; INSERT INTO employees_history (SELECT * FROM employees) ;
So sieht die Tabelle employee_history jetzt mit Daten aus.
Als Nächstes entfernen wir alle Datensätze mit der Anweisung TRUNCATE aus dieser Tabelle.
Wie in der Abbildung gezeigt, wird die Abfrage erfolgreich ausgeführt. Wenn Sie sich den Teil 'Nachricht' genauer ansehen, werden Sie feststellen, dass dort '0 betroffene Zeile (n)' steht. Wir wissen jedoch, dass diese Tabelle 15 Zeilen enthält. Wie kommt es dann, dass Shows Null sind?
Grund: Bei der Anweisung 'Abschneiden' ist es nicht wichtig zu zählen, wie viele Zeilen von der Ausführung betroffen sind. Es leert einfach den Tisch. Dies ist einer der wesentlichen Unterschiede zwischen den Anweisungen DELETE und TRUNCATE.
Überprüfen Sie die Ausführung der TRUNCATE-Anweisung, indem Sie eine SELECT-Abfrage für die Tabelle employee_history ausführen.
Wie in der obigen Abbildung gezeigt, hat die Abfrage keine Zeilen zurückgegeben und alle Spalten zeigen NULL-Werte an. Dies bedeutet, dass die zuvor ausgeführte TRUNCATE-Anweisung alle Datensätze aus der Tabelle gelöscht hat.
Abfrage:
TRUNCATE TABLE employees_history ;
Unterschied zwischen TRUNCATE- und DELETE-Anweisungen
Herr Nr | LÖSCHEN | KÜRZEN |
---|---|---|
1 | Es ist eine DML (Data Manipulation Language). | Es ist eine DDL (Data Definition Language). |
zwei | Jeder AFTER DELETE-Trigger in der Tabelle wird aktiviert, wenn der Befehl DELETE verwendet wird. | Wenn wir den Befehl TRUNCATE verwenden, wird kein AFTER DELETE-Trigger für die Tabelle aktiviert. |
3 | Ein Datensatz kann auch dann gelöscht werden, wenn Fremdschlüsseleinschränkungen vorliegen. | Datensätze aus der Tabelle können nicht abgeschnitten werden, wenn Fremdschlüsseleinschränkungen vorliegen. |
4 | Eine Neuinitialisierung der Tabelle wird nicht durchgeführt. | Die Tabelle wird neu initialisiert. |
5 | Die WHERE-Klausel kann verwendet werden. | Die WHERE-Klausel kann nicht verwendet werden. |
6 | Dadurch wird jeweils ein Datensatz gelöscht und die Gesamtzahl der gelöschten Datensätze in Protokollen verfolgt. | Es löscht alle Datensätze auf einmal und verfolgt nicht die Anzahl der gelöschten Datensätze. |
Referenzielle Integrität und ihre Auswirkungen auf DELETE
Bevor wir es sind, wollen wir mal sehen Was ist die referenzielle Integrität oder RI- oder Fremdschlüsseleinschränkungen?
Bei Fremdschlüsseleinschränkungen geht es darum, eine Beziehung oder Verknüpfung zwischen der übergeordneten und der untergeordneten Tabelle herzustellen. Dies hilft beim Querverweisen auf die Daten in den miteinander verknüpften Tabellen. Eine übergeordnete Tabelle kann mehrere untergeordnete Tabellen haben und umgekehrt.
Zum Beispiel, Die beiden Tabellen, die wir bisher besprochen haben, d. h. Mitarbeiter und Abteilungen, sind mithilfe einer Fremdschlüsseleinschränkung miteinander verknüpft. Diese Einschränkung wird festgelegt, indem eine Spalte, normalerweise der Primärschlüssel, als Schlüsselspalte für zwei Tabellen festgelegt wird.
Die Spalte deptNum in der Tabelle der Abteilung wurde mit der Spalte deptNum in der Tabelle des Mitarbeiters verknüpft. In diesem Fall sind Abteilungen die übergeordnete Tabelle und Mitarbeiter die untergeordnete Tabelle.
Aber wie wirkt sich das auf die DELETE-Anweisungen aus?
In MySQL oder in einer beliebigen Datenbank müssen beim Löschen von Datensätzen aus den übergeordneten oder untergeordneten Tabellen bestimmte Szenarien behandelt werden.
Es gibt mehrere Referenzoptionen, die wir diskutieren können:
# 1) AUF LÖSCHEN KASKADE: Die Regel besagt, dass wir eine Zeile nicht aus der übergeordneten Tabelle entfernen können, wenn sie Referenzen enthält oder eine entsprechende Zeile in einer der untergeordneten Tabellen enthält. Wenn eine übergeordnete Tabelle jedoch einige untergeordnete Tabellen enthält, ist es eine mühsame Aufgabe, zuerst die Datensätze aus jeder untergeordneten Tabelle und dann aus der übergeordneten Tabelle zu entfernen.
Dafür gibt es eine Problemumgehung namens ON DELETE CASCADE. Dies ist eine Klausel, die der CREATE-Anweisung jeder der untergeordneten Tabellen hinzugefügt wird. Wenn wir also sagen, eine Zeile aus der übergeordneten Tabelle löschen, identifiziert die MySQL-Engine zuerst die Referenzen dieser Zeile in den untergeordneten Tabellen und entfernt diese Datensätze und löscht schließlich den Datensatz aus der übergeordneten Tabelle.
# 2) KEINE AKTION: Dies ist eine Standardoption. Wenn die Ausführung einer DELETE-Anweisung versucht, einen Datensatz zu löschen, der Verweise in einer der untergeordneten Tabellen enthält, wird mit dieser Option die Ausführung der Anweisung gestoppt und die MySQL-Transaktion wird auf den letzten Festschreibungspunkt zurückgesetzt.
# 3) EINSCHRÄNKUNG: Die Funktionsweise von RESTRICT und NO ACTION ist identisch. Die Ausführung wird gestoppt und ein Rollback ausgegeben.
# 4) SET NULL: Wenn bei der Ausführung einer Löschanweisung versucht wird, einen Datensatz zu löschen, der Verweise in einer der untergeordneten Tabellen enthält, aktualisiert diese Option den Spaltenwert in allen untergeordneten Tabellen als NULL und löscht anschließend den Datensatz aus dem übergeordneten Datensatz Tabelle.
# 5) STANDARD EINSTELLEN: Wenn die Ausführung einer DELETE-Anweisung versucht, einen Datensatz zu löschen, der Verweise in einer der untergeordneten Tabellen enthält, aktualisiert diese Option die Spaltenwerte auf den Standardwert, der in der Anweisung CREATE der Tabelle definiert ist.
Häufig gestellte Fragen und Antworten
F # 1) Wie lösche ich Daten aus der Tabelle in MySQL?
Antworten: Die Syntax des Löschbefehls zum Löschen nur einer ausgewählten Datenzeile ist unten angegeben.
DELETE FROM table_name WHERE condition;
F # 2) Wie lösche ich alle Daten aus der Tabelle in MySQL?
Antworten: Die Syntax des Befehls DELETE zum Löschen aller Zeilen aus der Tabelle lautet:
DELETE * FROM table_name;
F # 3) Wie lösche ich die Tabelle in MySQL aus der Datenbank?
Antworten: Mit dem Befehl drop kann die Tabelle aus der Datenbank gelöscht werden. Der Benutzer kann den Tabellennamen durch die Tabelle ersetzen, die gelöscht werden muss.
DROP TABLE table_name;
F # 4) Wie lösche ich die Datenbank in MySQL?
Antworten: Mit dem Befehl drop kann die Datenbank gelöscht werden.
DROP Database db_name;
Benutzer können den Datenbanknamen durch den Datenbanknamen ersetzen, der gelöscht werden muss.
F # 5) Was ist ON DELETE CASCADE in MySQL?
Antworten: Wenn der übergeordnete Datensatz gelöscht wird, erstellt ON DELETE CASCADE einen passenden untergeordneten Datensatz, der gelöscht werden soll. Somit wird der Löscheffekt vom Elternteil auf das Kind übertragen. Dies kann beim Löschen mehrerer Tabellen hilfreich sein.
F # 6) Warum wird TRUNCATE als DDL-Anweisung betrachtet?
Antworten: Die TRUNCATE-Anweisung löscht die Tabelle und erstellt sie zusammen mit den Metadaten der Tabelle neu. Es handelt sich also um eine DDL-Anweisung.
F # 7) Kann TRUNCATE zurückgesetzt werden?
Antworten: Nein, TRUNCATE ist eine Auto-Commit-Anweisung, wenn sie eigenständig ausgeführt wird. Dies bedeutet, dass es nicht zurückgesetzt werden kann, da das Commit auch zusammen mit ihm ausgeführt wird. Wenn es sich jedoch um einen Teil einer Transaktion handelt, kann es mithilfe der SQL-Protokolldateien zurückgesetzt werden.
F # 8) Können DELETE-Anweisungen zurückgesetzt werden?
Antworten: Ja, DELETE-Anweisungen können zurückgesetzt werden. Führen Sie einfach den Befehl ROLLBACK aus, bevor Sie COMMIT ausführen.
F # 9) Kann eine Spalte mit dem Befehl DELETE gelöscht werden?
Antworten: Das Hinzufügen oder Löschen von Spalten sind DDL-Befehle. Eine ALTER-Anweisung sollte verwendet werden, um eine Spalte aus der Tabelle zu entfernen.
Fazit
In diesem Tutorial haben wir verschiedene Methoden zum Ausführen von DELETE-Anweisungen in MySQL kennengelernt.
Kurz gesagt, wir haben gesehen:
- MySQL Einzelne Zeile löschen
- MySQL Delete mit ORDER BY und Limit-Klausel
- MySQL löschen mit Select-Klausel
- MySQL Gesamte Tabelle löschen
- MySQL abschneiden
- Unterschied zwischen TRUNCATE- und DELETE-Anweisungen
- Referenzielle Integrität und ihre Auswirkungen auf DELETE
Wir können je nach Anforderung eine der oben genannten Methoden verwenden.
Fröhliches Lesen!!
Literatur-Empfehlungen
- Unix Cat-Befehlssyntax, Optionen mit Beispielen
- Unix-Sortierbefehl mit Syntax, Optionen und Beispielen
- MySQL Insert Into Table - Syntax und Beispiele für Insert-Anweisungen
- MongoDB Dokument mit Beispielen aktualisieren und löschen
- Befehl in Unix mit Beispielen ausschneiden
- Neue / gelöschte Operatoren in C ++ mit Beispielen
- Tutorial zur MySQL-Update-Anweisung - Syntax und Beispiele für Update-Abfragen
- Ls-Befehl unter Unix mit Beispielen