- 相同点:
- truncate和不带where子句的delete、以及drop都会删除表内的数据;
- drop、truncate都是DDL(数据定义语言)语句,执行后会自动提交。
- 不同点:
- truncate和delete只删除数据,不删除表的结构;drop则删除整张表(结构和数据);
- delete属于DML语句,事务提交之后才会生效,支持rollback操作;truncate和drop属于DDL语句,操作后立即生效,不支持rollback操作;
- 一般而言,执行速度:drop > truncate > delete;
- 应用范围:truncate只能对table;delete可以是table和view;drop可以是database、table、字段;
- 对于一张表:truncate后,立即释放磁盘空间,这个表的索引所占用的空间会恢复到初始大小;delete后,存储空间不会被释放,只是把删除的数据行设置为不可见;drop后,立即释放磁盘空间。