欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库 - Truncate/Delete/Drop区别及MySQL如何清空表中的数据

程序员文章站 2024-03-21 08:50:46
...

一、用法与释义

1. DROP

用法:DROP TABLE 表名

DDL语句,删除内容和表定义,并释放空间。即删除数据和表结构。

2. TRUNCATE

用法: TRUNCATE TABLE 表名

DDL语句,删除内容、释放空间,保留表结构。删除表数据,不能删除行数据。

3. DELETE

用法: DELETE TABLE 表名 WHERE 条件

DML语句,同TRUNCATE类似,DELETE即可删除行也是删除整个表数据。


二、区别

1. 执行效率

DROP > TRUNCATE > DELETE

DELETE执行过程是 每次从表中删除一行,并将该操作作为事务记录保存在日志,便于回滚操作。

2. 触发器和事务

DELETE支持事务和trigger


三、MySQL如何清空表中的数据

删除表信息的方式有两种:

truncate table table_name;

delete * from table_name;

比较:

(1)不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。

(2)效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。

(3)delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。(delete删除表数据,相当于一条条删除,需要注意的是,如果有字段是自增的(一般为id),这样删除后,id 值还是存在的。举例来说,就是加入你在删除之前最大的id为100,你用这种方式清空表后 ,新插入一条数据其id为101,而不是1)