MySQL TRUNCATE और DROP कमांड के बीच सबसे महत्वपूर्ण अंतर यह है कि TRUNCATE कमांड टेबल की संरचना को नष्ट नहीं करती, लेकिन इसके विपरीत DROP कमांड टेबल की संरचना को भी नष्ट कर देती है।
उदाहरण:
mysql> CREATE TABLE testing(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name VARCHAR(20));
Query OK, 0 rows affected (0.24 sec)
mysql> INSERT INTO testing(Name) VALUES('Ram'),('Mohan'),('John');
Query OK, 3 rows affected (0.12 sec)
mysql> SELECT * FROM testing;
+----+-------+
| id | Name |
+----+-------+
| 1 | Ram |
| 2 | Mohan |
| 3 | John |
+----+-------+
अब 'testing' टेबल को TRUNCATE करने के बाद, इसकी संरचना डेटाबेस में बनी रहती है और यह PRIMARY KEY को भी आरंभ करती है:
mysql> TRUNCATE TABLE testing;
Query OK, 0 rows affected (0.04 sec)
mysql> DESCRIBE testing;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
लेकिन जब हम टेबल पर DROP कमांड लागू करते हैं तो संरचना भी डेटाबेस से हट जाती है:
mysql> DROP TABLE testing;
Query OK, 0 rows affected (0.08 sec)
mysql> DESCRIBE testing;
ERROR 1146 (42S02): Table 'query.testing' doesn't exist
सारांश:
- TRUNCATE: डेटा हटाता है, संरचना रखता है, AUTO_INCREMENT रीसेट करता है
- DROP: डेटा और संरचना दोनों हटाता है, टेबल पूरी तरह गायब हो जाती है