赞
踩
(1)从指令类型来看:delete属于dml指令;
truncate:truncate是ddl指令
drop:drop是ddl指令
(2)从删除范围上来看:delete可以删除全部数据,也可以在where后面添加条件只删除部分数据;
truncate只能删除表的数据
drop会将删除表的结构以及表的数据全部删除
(3)执行效率:drop > truncate > delete
1.truncate回收空间,delete在显式提交前不回收
2.delete在删除数据之前,会在事务记录日志之中记录有关删除的操作,删除行中的数据,方便日后回滚或者利用事务日志中的记录进行数据恢复,truncate不更新事务记录日志。
3.Delete语句在删除记录时,要先将表中的各行锁定,才能删除记录,
而Truncate Table不会锁定各行,只锁定表
4.如果要删除记录的表是其他表外键指向的表,那么不能用 Truncate Table语句来删除,只能用Delete语句来删除(看级联方式而言)
5.drop:执行后立即生效
6. drop table table_name 立刻释放磁盘空间 ,不管是 InnoDB 和 MyISAM; drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index); 依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。