数据库 - 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)
上一篇: MySQL 清空表中数据