MySQL中TRUNCATE和DROP命令之间的显着区别是什么?
MySQL中TRUNCATE和DROP命令之间最显着的区别是TRUNCATE命令不会破坏表的结构,而DROP命令会破坏表的结构。
阅读更多:MySQL 教程
例子
mysql> CREATE TABLE testing(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name VARCHAR(20));
查询成功,受影响的行数为0(用时0.24秒)
mysql> INSERT INTO testing(Name) VALUES ('Ram'),('Mohan'),('John');
查询成功,受影响的行数为3(用时0.12秒)
记录:3 重复:0 警告:0
mysql> SELECT * FROM testing;
+----+-------+
| id | Name |
+----+-------+
| 1 | Ram |
| 2 | Mohan |
| 3 | John |
+----+-------+
共3行(用时0.00秒)
现在,在TRUNCATING ‘testing’表后,其结构仍然存在于数据库中,它也初始化了主键。
mysql> TRUNCATE TABLE testing;
查询成功,受影响的行数为0(用时0.04秒)
mysql> DESCRIBE testing;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
共2行(用时0.21秒)
但是,如果我们对一个表应用DROP命令,则结构也会从数据库中删除。
mysql> DROP TABLE testing;
查询成功,受影响的行数为0(用时0.08秒)
mysql> DESCRIBE testing;
ERROR 1146 (42S02): Table 'query.testing' doesn't exist
极客教程