MySQL中TRUNCATE和DROP命令之间的显着区别是什么?

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程