Implementierung der MySQL-Tabellenlöschoperation (Unterschiede zwischen Löschen, Abschneiden und Löschen)

Implementierung der MySQL-Tabellenlöschoperation (Unterschiede zwischen Löschen, Abschneiden und Löschen)

In diesem Artikel werden hauptsächlich die Unterschiede zwischen drei Vorgängen zum Löschen von Tabellen in MySQL erläutert: der Delete-Anweisung, der Truncate-Anweisung und der Drop-Anweisung:

Einführung

löschen

1. Löschen Sie die Daten der gesamten Tabelle:

aus Tabellenname löschen;

2. Löschen Sie einige Daten und fügen Sie eine Where-Klausel hinzu:

Löschen aus Tabellenname, wobei ...;

3. Beschreibung

1) Es gehört zur DML-Sprache. Jedes Mal, wenn eine Zeile gelöscht wird, wird für jede gelöschte Zeile ein Eintrag im Transaktionsprotokoll aufgezeichnet. Ein Rollback wird generiert und wird erst wirksam, nachdem die Transaktion festgeschrieben wurde. Wenn ein entsprechender Trigger vorhanden ist, wird dieser während der Ausführung ausgelöst. Wenn eine Tabelle mit einer großen Datenmenge gelöscht wird, ist die Geschwindigkeit sehr langsam.
2) Löschen Sie die Daten in der Tabelle, ohne die Tabellenstruktur (Definition) zu löschen und den Speicherplatz freizugeben.

kürzen

1. Sie können nur die Tabelle bearbeiten und alle Daten in der Tabelle löschen. Die Funktion ist dieselbe wie bei der Löschanweisung ohne die Where-Klausel:

Tabelle Tabellenname abschneiden;

2. Beschreibung

1) Standardmäßig löscht Truncate Daten, indem es die zum Speichern der Tabellendaten verwendeten Datenseiten freigibt, und zeichnet die Freigabe der Seiten nur im Transaktionsprotokoll auf. Daher werden weniger System- und Transaktionsprotokollressourcen verwendet und der Speicher kann wiederverwendet werden. Durch Truncate wird die Obergrenze zurückgesetzt (zurück zum Anfang).
2) Truncate ist eine DDL-Sprache. Der Vorgang wird sofort wirksam und automatisch festgeschrieben. Die Originaldaten werden nicht in das Rollback-Segment eingefügt und können nicht zurückgesetzt werden. Der Vorgang löst keinen Trigger aus.
3) Löschen Sie den Inhalt und geben Sie Speicherplatz frei, aber löschen Sie nicht die Tabellenstruktur (Definition).

fallen

1. Die Drop-Anweisung löscht die Tabellenstruktur sowie die abhängigen Einschränkungen, Trigger und Indizes.

Tabelle Tabellenname löschen;

2. Hinweis 1) Nach dem Löschen bleiben die von der Tabelle abhängigen gespeicherten Prozeduren/Funktionen erhalten, werden jedoch ungültig.
2) Drop gehört auch zur DDL-Sprache, die sofort ausgeführt wird und die schnellste Ausführungsgeschwindigkeit hat. 3) Löschen Sie Inhalt und Definition, um Speicherplatz freizugeben.

Der Unterschied

1. Von Tabellen und Indizes belegter Speicherplatz:
Wenn eine Tabelle gekürzt wird, wird der von der Tabelle und den Indizes belegte Speicherplatz auf die ursprüngliche Größe zurückgesetzt.
DELETE-Operationen reduzieren nicht den von Tabellen oder Indizes belegten Speicherplatz.
Die DROP-Anweisung gibt den gesamten von der Tabelle belegten Speicherplatz frei.

2. Anwendungsbereich:
TRUNCATE kann nur auf Tabellen ausgeführt werden;
DELETE kann eine Tabelle oder eine Ansicht sein.

3. Ausführungsgeschwindigkeit: drop > truncate > delete

4. Nach dem Löschen einer leeren Tabelle bleibt mit „delete from“ eine leere Seite erhalten, und mit „truncate“ bleiben keine Seiten in der Tabelle übrig.

5. Der Vorgang der Ausführung der DELETE-Anweisung besteht darin, jedes Mal eine Zeile aus der Tabelle zu löschen und gleichzeitig den Löschvorgang der Zeile als Transaktionsdatensatz im Protokoll für den Rollback-Vorgang zu speichern.

TRUNCATE TABLE löscht alle Daten auf einmal aus der Tabelle, ohne einzelne Löschvorgänge zu protokollieren. Gelöschte Zeilen können nicht wiederhergestellt werden. Und die mit der Tabelle verbundenen Löschauslöser werden während des Löschvorgangs nicht aktiviert. Schnelle Ausführungsgeschwindigkeit.

6. Wenn eine DELETE-Anweisung mit einer Zeilensperre ausgeführt wird, wird jede Zeile in der Tabelle zum Löschen gesperrt. truncate sperrt immer Tabellen und Seiten, nicht einzelne Zeilen.

7. Wenn es eine durch Identität generierte ID-Spalte mit automatischer Inkrementierung gibt, wird sie nach dem Löschen immer noch von der letzten Zahl an erhöht, d. h. der Seed bleibt unverändert.

Nach dem Löschen mit Truncate wird der Seed auf den Anfangswert zurückgesetzt.

Zusammenfassen

1. Die Löschanweisung kann die Where-Klausel verwenden, um eine teilweise Löschung zu erreichen, Truncate hingegen nicht. Dadurch werden alle Daten in der Tabelle gelöscht. Bei der Verwendung können Sie entsprechend Ihren Anforderungen wählen.
2. Wenn Sie alle Daten aus der Tabelle löschen möchten, verwenden Sie nicht „delete“, sondern die Anweisung „truncate“, da diese schneller ausgeführt wird. Die Truncate-Anweisung löscht tatsächlich die ursprüngliche Tabelle und erstellt dann eine neue Tabelle.
3. Wenn kein Backup vorhanden ist, verwenden Sie Drop und Truncate mit Vorsicht. Um die Tabellenstruktur zu löschen, verwenden Sie „drop“.
4. Für Tabellen, auf die durch FOREIGN KEY-Einschränkungen verwiesen wird, kann TRUNCATE TABLE nicht verwendet werden. Stattdessen sollte eine DELETE-Anweisung ohne WHERE-Klausel verwendet werden. Da TRUNCATE TABLE nicht protokolliert wird, kann es keine Trigger aktivieren.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des Unterschieds zwischen DROP, TRUNCATE und DELETE in MySQL. Implementierung von MySQL von Grund auf
  • Verwendung von Drop-, Truncate- und Delete-Anweisungen in SQL Server
  • Der Unterschied zwischen Drop, Truncate und Delete
  • Vergleich der Ähnlichkeiten und Unterschiede zwischen Drop-, Delete- und Truncate-Anweisungen in der Datenbank (mit Beispielen)
  • Detaillierte Erklärung der Ähnlichkeiten und Unterschiede zwischen Drop, Delete und Truncate in SQL
  • Eine kurze Analyse verschiedener Methoden zum Löschen von Tabellen (Löschen, Löschen, Abschneiden)
  • Detaillierte Analyse der Unterschiede zwischen Drop, Truncate und Delete in MySQL

<<:  Detaillierte Erklärung von JavaScript zur Überwachung von Routenänderungen

>>:  So konfigurieren Sie den Tomcat-Server für Eclipse und IDEA

Artikel empfehlen

MySQL-Trigger: ausführliche Erklärung und einfaches Beispiel

Einfaches Beispiel für einen MySQL-Trigger Gramma...

So beheben Sie den Fehler beim MySQL-Transaktionsvorgang

So beheben Sie den Fehler beim MySQL-Transaktions...

CSS3 realisiert den verschiebbaren Zauberwürfel-3D-Effekt

Hauptsächlich verwendete Wissenspunkte: •CSS3 3D-...

Eine SQL-Anweisung schließt die MySQL-Deduplizierung ab und behält eine

Als ich vor einigen Tagen an einer Anforderung ar...

Grafisches Tutorial zur Installation und Konfiguration von CenOS6.7 mysql 8.0.22

CenOS6.7 installiert MySQL8.0.22 (empfohlene Samm...

Eine ausführliche Einführung in React-Referenzen

1. Was ist Refs wird in Computern als Resilient F...

XHTML-Tutorial für den Einstieg: Häufig verwendete XHTML-Tags

<br />Genau wie ein Artikel sollten unsere W...

Unterscheiden Sie zwischen Nullwert und leerem Zeichen ('') in MySQL

Bei der täglichen Entwicklung geht es im Allgemei...

JavaScript Canvas Tetris-Spiel

Tetris ist ein sehr klassisches kleines Spiel, un...

Vor- und Nachteile des Tabellenlayouts und warum es nicht empfohlen wird

Nachteile von Tabellen 1. Tabellen nehmen mehr Byt...

Detailliertes Tutorial zur Installation von ElasticSearch 6.x im Docker

Ziehen Sie zuerst das Image (oder erstellen Sie e...