DCL:数据控制语言;
1.COMMIT:
- 指的是提交数据,一旦执行COMMIT,那么数据就被永久地保存在数据库中---那么也就不可以回滚;
2.ROLLBACK:
- 指的是回滚数据,一旦执行ROLLBACK,那么就可以实现数据的回滚(但是并不一定成功)---回滚到最近的一次COMMIT之后。
由此,对比一下TRUNCATE TABLE(DDL)和DELETE FROM(DML):
- 相同点:都能删除表中的所有数据,并且保留表结构;
- 不同点:TRUNCATE TABLE--->一旦执行此操作,表数据就全部清除,并且数据不可以回滚(因为操作完后自动操作了commit);DELETE FROM--->一旦执行此操作,可以清楚全部数据(也可清楚部分,带WHERE),可以实现回滚(也可以不实现);
- DDL--->一旦执行就不可以回滚;DML--->默认情况是一旦执行就不可以回滚,但可以通过在执行之前修改参数(SET autocommit=FALSE)使得可以回滚;
- 在实际操作中,TRUNCATE TABLE速度比DELETE 快,占用资源少,但是有可能造成事故,所以不建议使用TRUNCATE;