Truncate与Delete区别
Truncate的介绍
1.使用方法
删除表数据
TRUNCATE table1;
truncate是MySQL中删除功能的一个语句。作用是清空表或者说是截断表,只能作用于表。truncate的语法很简单,后面直接跟表名即可。
2.注意使用需要权限
执行truncate语句需要拥有表的drop权限。
从逻辑上讲,truncate table类似于delete删除所有行的语句或drop table然后再create table语句的组合。为了实现高性能,它绕过了删除数据的DML方法,因此,它不能回滚。
DML:数据操作语言-数据库的基本操作,即增删改查
Delte介绍
1.使用方法
删除表数据或视图:
delete from table_name;
delete from table_name where 删除条件;
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
Truncate与Delete的异同
1.相同点
1.两者均可以对表进行删除语句。对表数据进行删除操作,但是对结构没有删除。
2.不相同点
1.Truncate只能运用于表,Delete可以适用于表与视图等
2.Truncate会重置表的自增值;Delete不会。
3.Truncate不会激活与表有关的删除触发器;Delete可以。
4.Truncate后会使表和索引所占用的空间会恢复到初始大小;Delete操作不会减少表或索引所占用的空间。
5.Delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚;truncate 是 DDL 语句,操作完马上生效,不能回滚。