Verstehen Sie einfach die Unterschiede in den Prinzipien gängiger SQL-Delete-Anweisungen

Verstehen Sie einfach die Unterschiede in den Prinzipien gängiger SQL-Delete-Anweisungen

In diesem Artikel werden hauptsächlich die Unterschiede zwischen den SQL-Löschanweisungen DROP, TRUNCATE und DELETE vorgestellt, damit Sie SQL-Anweisungen besser verstehen und lernen können. Interessierte Freunde können mehr darüber erfahren.

FALLEN:

DROP TABLE-Test;

Löschen Sie die Testtabelle und geben Sie Speicherplatz frei, indem Sie alle Daten in der Testtabelle löschen.

KÜRZEN:

TRUNCATE-Test;

Löschen Sie den Inhalt der Testtabelle und geben Sie Speicherplatz frei. Löschen Sie jedoch nicht die Tabellendefinition. Die Tabellenstruktur bleibt erhalten.

LÖSCHEN:

1. Bestimmte Daten löschen

Löschen Sie in der Testtabelle die Daten, deren Alter 30 Jahre beträgt und deren Herkunftsland die USA ist

LÖSCHEN AUS Test, wobei Alter=30 UND Land='USA';

2. Löschen Sie die gesamte Tabelle

Löschen Sie den gesamten Inhalt der Testtabelle, behalten Sie die Tabellendefinition bei und geben Sie keinen Speicherplatz frei.

DELETE FROM-Test oder TRUNCATE-Test;

Der Befehl „truncate table“ löscht schnell alle Datensätze in einer Tabelle, behält aber die Tabellenstruktur bei. Dieses schnelle Löschen unterscheidet sich vom Befehl „Aus Tabelle löschen“, der alle Tabellendatensätze löscht. Die mit dem Befehl „Löschen“ gelöschten Daten werden im Rollback-Segment des Systems gespeichert. Bei Bedarf können die Daten zurückgesetzt und wiederhergestellt werden, während die mit dem Befehl „Truncate“ gelöschten Daten nicht wiederhergestellt werden können.

Ähnlichkeiten

Durch Abschneiden, Löschen ohne Where-Klausel und Löschen werden Daten in der Tabelle gelöscht.

Unterschiede:

1. Mit „Truncate and Delete“ werden nur die Daten gelöscht, nicht aber die Tabellenstruktur (Definition). Die Drop-Anweisung löscht die Constraints, Trigger und Indizes, von denen die Tabellenstruktur abhängt; die gespeicherten Prozeduren/Funktionen, die von der Tabelle abhängen, bleiben erhalten, werden aber ungültig.

2. Die Löschanweisung ist eine DML-Anweisung. Dieser Vorgang wird im Rollback-Segment platziert und wird erst wirksam, nachdem die Transaktion festgeschrieben wurde. Wenn ein entsprechender Trigger vorhanden ist, wird er bei der Ausführung ausgelöst. Truncate und Drop sind DDL-Operationen. Die Operation wird sofort wirksam. Die Originaldaten werden nicht in das Rollback-Segment eingefügt und können nicht zurückgesetzt werden. Der Vorgang löst den Trigger nicht aus.

3. Die Löschanweisung hat keinen Einfluss auf den von der Tabelle belegten Umfang und die Hochwassermarke verbleibt an ihrer ursprünglichen Position. Offensichtlich gibt die Drop-Anweisung den gesamten von der Tabelle belegten Speicherplatz frei. Standardmäßig gibt die Truncate-Anweisung Speicherplatz für Minextents-Extents frei, sofern kein wiederverwendeter Speicher verwendet wird. Truncate setzt die Obergrenze zurück (auf den Anfang).

4. Geschwindigkeit: Generell gilt: löschen > abschneiden > löschen.

5. Sicherheit: Verwenden Sie Drop und Truncate mit Vorsicht, insbesondere wenn kein Backup vorhanden ist. Sonst ist es zu spät zum Weinen.
endlich

Wenn Sie einige Datenzeilen löschen möchten, verwenden Sie „delete“ und achten Sie darauf, die Where-Klausel einzuschließen. Das Rollback-Segment muss groß genug sein.

Wenn Sie eine Tabelle löschen möchten, verwenden Sie natürlich „drop“.

Sie möchten die Tabelle behalten, aber alle Daten löschen. Wenn es nicht mit der Transaktion zusammenhängt, verwenden Sie einfach „truncate“. Wenn es sich um eine Transaktion handelt oder Sie einen Auslöser auslösen möchten, verwenden Sie „Löschen“.

Wenn Sie die Tabelle defragmentieren müssen, können Sie „truncate“ verwenden, anschließend den Speicher wiederverwenden und die Daten anschließend erneut importieren/einfügen.

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:
  • Mysql, einige komplexe SQL-Anweisungen (Abfragen und Löschen doppelter Zeilen)
  • Verwenden Sie SQL-Batch-Ersetzungsanweisungen, um Feldinhalte zu ändern, hinzuzufügen und zu löschen
  • SQL-Anweisung zum Löschen doppelter Datensätze und Behalten nur eines
  • Must-Know-SQL-Anweisungen (IV) Daten löschen und aktualisieren
  • Wichtige SQL-Anweisungen (Teil 2) Tabelle erstellen, Tabellenstruktur ändern, Tabelle löschen
  • Beispielcode zum Erstellen und Löschen von Einschränkungen mithilfe von SQL-Anweisungen
  • Oracle verwendet SQL-Anweisungen zum Hinzufügen von Feldern (SQL-Anweisungen zum Löschen von Feldern).
  • SQL-Anweisung zum Batch-Löschen der angegebenen Präfixtabelle in MySQL
  • So löschen und fügen Sie Fremdschlüssel und Primärschlüssel mit SQL-Anweisungen hinzu
  • Vergleich der MySQL Delete- und Truncate-Anweisungen

<<:  Vue3 AST Parser-Quellcode-Analyse

>>:  Lösung für die langsame Reaktion des Tomcat-Servers

Artikel empfehlen

Lösung für BT Baota Panel php7.3 und php7.4 unterstützen ZipArchive nicht

Die Lösung für das Problem, dass die PHP7.3-Versi...

Detaillierte Erläuterung des Lernens von CSS-Zählerattributen

Das CSS-Zählerattribut wird von fast allen Browse...

MySQL-Join-Abfrage (Left Join, Right Join, Inner Join)

1. Allgemeine Verbindungen für MySQL INNER JOIN (...

CSS-Pickup-Pfeile, Kataloge, Icons Implementierungscode

1. Verschiedene CSS-Symbole Es gibt drei Möglichk...

Der beste Weg, ein JAR-Paketprojekt unter einem Centos7-Server zu starten

Vorwort Jeder weiß, wie man ein JAR-Paket unter L...

Lassen Sie uns ausführlich über den Symboldatentyp in ES6 sprechen

Inhaltsverzeichnis Symboldatentyp Der Grund, waru...

Auszeichnungssprache - Bildersetzung

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

JavaScript implementiert eine bidirektionale verknüpfte Listenprozessanalyse

Inhaltsverzeichnis 1. Was ist eine doppelt verknü...

js Array fill() Füllmethode

Inhaltsverzeichnis 1. fill()-Syntax 2. Verwendung...