drop、truncate、delete虽然简单,但是真正用到或者面试被问到的时候还是需要总结的。以下文章主要介绍mysql中drop、truncate、delete区别的相关信息,有需要的可以参考。
: 目录
1.删除:删除数据库2。比较TRUNCATE TABLE和delete from 3。DDL和DML 4的描述。效率比较总结
1. drop:删除数据库
Drop语句释放表占用的所有空间。删除截断删除
1:如果要删除的数据库存在,则删除成功。如果不存在,则会报告一个错误。
删除数据库mytest1
2:推荐。如果要删除的数据库存在,则删除成功。如果不存在,就默默结束,不报错。
如果存在mytest1,则删除数据库;
2. 对比 TRUNCATE TABLE 和 DELETE FROM
相同点:可以删除表中的所有数据,同时保留表结构。
差异:
TRUNCATE TABLE:一旦执行了这个操作,所有的表数据都将被清除。同时,数据不能回滚。删除:一旦执行了这个操作,所有的表数据都可以被清除(没有WHERE)。同时,数据可以回滚。
3. DDL 和 DML 的说明
一次DDL(创建、删除、更改、截断等。)被执行,则不能回滚。SET autocommit=FALSE对于DDL操作无效。(因为DDL操作完成后,会执行一次提交。并且此提交操作不受SETautocommit=FALSE的影响。)
DML的默认条件(插入、删除、更新、选择等。)一旦执行就不可逆。但是,如果在执行DML之前执行SET autocommit=FALSE,则可以回滚DML操作。
1:删除数据后,恢复数据。
设置autocommit=FALSE
从myemp3中删除;
查询的数据为空。
回滚数据
再次查询,可以看到恢复的数据。
2:截断表,数据操作无法回滚。
设置autocommit=FALSE
截断表myemp3
清除了数据
回滚事情
反转
查询后,数据不会恢复。
4.效率对比
从速度上来说,一般来说,drop truncate delete。
如果要用delete删除一些数据,注意where子句,回滚段要足够大;如果要删除一个表,当然使用drop;如果希望保留表并删除所有数据,如果与事务无关(不能回滚),则使用truncate。如果和事务有关,或者你想触发一个触发器,还是用delete;如果是整理表内的碎片,可以用truncate跟上复用行,然后再导入/插入数据。Truncate和drop是DDL语句,在执行后不能回滚;是delete DML语句,可以回滚。Truncate只能对表起作用;Delete、drop可用于表、视图等。Truncate将清空表中的所有行,但表结构、其约束、索引等除外。将保持不变;Drop将删除表的结构及其相关约束、索引等。Truncate将重置表的自增量;删除不会。Truncate不会激活与该表相关的删除触发器;删除就可以了。Truncate会将表和索引占用的空间恢复到原始大小;删除操作不会减少表或索引占用的空间,而drop语句将释放表占用的所有空间。
总结
关于mysql中drop、truncate和delete之间的区别的这篇文章就到这里了。有关MySQL中Drop、truncate和delete之间差异的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!