1.truncate
删除表中内容,不删除表结构,释放空间
2.delete
删除表中内容,不删除表结构,不释放空间
3.区别
3.1内存空间
truncate删除数据后重新写数据会从1开始,而delete删除数据后会从删除前的最后一行开始续写;内存空间上,truncate省空间
3.2处理速度
因为truncate直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;truncate删除速度比delete快
3.3语句类型
delete属于DML语句,truncate和drop属于DDL语句,这造成它们在事务中的不同现象:
- delete在事务中,因为属于DML语句,可进行回滚和提交操作(由操作者);
- truncate和drop属于DDL语句,在事务中,执行后自动commit,不可回滚;
3.4语法
- delete可加上where进行条件删除。
- truncate和drop后面只能加表名,直接删除表数据/表结构。
注意:并且drop和truncate不能够激活触发器,因为该操作不记录各行删除;
drop table 表名
数据和表结构一起删除;