truncate、delete与drop的异同点:
相同之处:三者均会删除表内的数据。
不同点:
1、truncate与delete :只删除数据,而不删除表的结构(定义)
drop语句删除表定义及该表的所有数据、索引、触发器、约束和权限规范;依赖于该表的存储过程/函数将被保留,
但其状态会变为:invalid。
2、delete操作记录到事务日志中,以后可以根据事务日志恢复数据。truncate操作不记录到事务日志,该操作不可恢复。
3、如果有触发器的话,delete会激发触发器。truncate与drop,则不会。
4、如果表内有标识种子的话,delete数据后,该标识种子不重置,会在原来基础上继续增长。
truncate则会把标识重新置为初始值,重新开始增长。
5、速度:一般而言,drop > truncate > delete。
6、安全性:在没有备份情况下,谨慎使用 drop 与 truncate。要删除部分数据行采用 delete且注意结合where来约束影响范围。
回滚段要足够大。要删除表用drop;
如果要看详细的异同点,还要参考联机帮助。