您的位置:首页 > 数据库 > SQL

SQL--delete、drop、truncate的区别

2015-08-03 16:31 726 查看
1、相同:delete、drop、truncate都回删除数据库里的数据。

2、不同:

1)delete:只删除数据,不删除表结构;是dml语言,要提交后才会生效;执行时,有相应的触发器(trigger),会触发;空间资源不影响;

2)drop:删除数据,删除表结构;是ddl语言,自动提交;不会删除依赖于该表的约束,触发器,索引等,但不执行触发器(trigger),;空间释放到 minextents个 extent;

3)truncate:只删除数据,不删除表结构;是ddl语言,自动提交;会删除表中的约束(constrain)、触发器(trigger)、索引(index),依赖于该表的存储过程/函数将保留,但是变为 invalid 状态;drop会释放掉所有的空间资源;

3、速度,一般来说: drop> truncate > delete

truncate删除表中数据时,使用的系统和事务日志少。释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

delete删除表中数据时,每次删除一行,都要在事务日志中为该行记录一项。

4、一般如果要保留表,并且和事务无关的删除性操作使用truncate, 则不会触发trigger, 否则使用delete;

有foreign key约束的表,不能用truncate来删除数据,只能使用delete。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: