Apakah perbezaan antara perintah MySQL TRUNCATE dan DELETE?

WBOY
Lepaskan: 2023-09-12 14:13:02
ke hadapan
868 orang telah melayarinya

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

Seperti yang kita sedia maklum, TRUNCATE akan memadamkan semua baris tanpa mengalih keluar struktur jadual daripada pangkalan data. Perkara yang sama boleh dilakukan dengan bantuan perintah DELETE untuk memadam semua baris dari jadual. Tetapi terdapat perbezaan yang ketara dalam pemulaan semula PRIMARY KEY AUTO_INCRMENT antara kedua-dua arahan.

Dengan mengandaikan bahawa lajur ditakrifkan dengan AUTO_INCRMENT dengan KEKANGAN UTAMA UTAMA, maka jadual permulaan tidak akan dimulakan semula apabila semua baris dipadamkan menggunakan perintah DELETE, iaitu, apabila baris baharu dimasukkan, Nombor AUTO_INCREMENT akan ditukar daripada yang terakhir dimasukkan Mula demi baris. Sebaliknya, apabila menggunakan TRUNCATE, jadual dimulakan semula seperti jadual yang baru dibuat. Ini bermakna selepas menggunakan perintah TRUNCATE dan memasukkan baris baharu, nombor AUTO_INCRMENT akan bermula pada 1.

Contoh

Contoh berikut akan menunjukkan konsep di atas -

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)
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah perbezaan antara perintah MySQL TRUNCATE dan DELETE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!