Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was ist der Unterschied zwischen den MySQL-Befehlen TRUNCATE und DELETE?

WBOY
Freigeben: 2023-09-12 14:13:02
nach vorne
906 Leute haben es durchsucht

MySQL TRUNCATE 和 DELETE 命令有什么区别?

Wie wir alle wissen, löscht TRUNCATE alle Zeilen, ohne die Struktur der Tabelle aus der Datenbank zu entfernen. Dasselbe kann mit Hilfe des DELETE-Befehls durchgeführt werden, um alle Zeilen aus der Tabelle zu löschen. Es gibt jedoch erhebliche Unterschiede bei der Neuinitialisierung von PRIMARY KEY AUTO_INCRMENT zwischen den beiden Befehlen.

Angenommen, eine Spalte ist mit AUTO_INCRMENT mit PRIMARY KEY CONSTRAINT definiert, dann wird die Initialisierungstabelle nicht neu initialisiert, wenn alle Zeilen mit dem DELETE-Befehl gelöscht werden, d. h. wenn eine neue Zeile eingegeben wird, beginnen die AUTO_INCREMENT-Nummern nach der zuletzt eingefügten Zeile . Im Gegensatz dazu wird bei der Verwendung von TRUNCATE die Tabelle wie eine neu erstellte Tabelle neu initialisiert. Das bedeutet, dass nach der Verwendung des TRUNCATE-Befehls und dem Einfügen einer neuen Zeile die AUTO_INCRMENT-Nummern bei 1 beginnen.

Beispiel

Das folgende Beispiel demonstriert das obige Konzept –

mysql> Create table Testing(Id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(20));
Query OK, 0 rows affected (0.15 sec)

mysql> Insert into testing(Name) values('Gaurav'),('Rahul'),('Aarav'),('Yashraj'),('Manak');
Query OK, 5 rows affected (0.09 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> Select * from testing;

+----+---------+
| Id | Name    |
+----+---------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Aarav   |
| 4  | Yashraj |
| 5  | Manak   |
+----+---------+

5 rows in set (0.00 sec)

mysql> Delete from testing where id >=4;
Query OK, 2 rows affected (0.04 sec)

mysql> Select * from testing;

+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav |
| 2  | Rahul  |
| 3  | Aarav  |
+----+--------+

3 rows in set (0.00 sec)

mysql> Insert into testing(Name) values('Harshit'),('Lovkesh');
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Select * from testing;

+----+---------+
| Id | Name    |
+----+---------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Aarav   |
| 6  | Harshit |
| 7  | Lovkesh |
+----+---------+

5 rows in set (0.00 sec)

mysql> Truncate table testing;
Query OK, 0 rows affected (0.10 sec)

mysql> Insert into testing(Name) values('Harshit'),('Lovkesh'),('Ram'),('Gaurav');
Query OK, 4 rows affected (0.11 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> Select * from testing;

+----+---------+
| Id | Name    |
+----+---------+
| 1  | Harshit |
| 2  | Lovkesh |
| 3  | Ram     |
| 4  | Gaurav  |
+----+---------+

4 rows in set (0.00 sec)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den MySQL-Befehlen TRUNCATE und DELETE?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage