mssql sqlserver truncate关键字同delete关键字的用法区别

摘要:

系统开发初期,我们常常需要对数据库进行业务数据清理,然后再做下一步数据测试,
由于系统中大量的使用标识列,所以需要大量使用truncate清理掉业务表,
下午将主要讲述清理数据的两种方式 truncate delete


目录:
truncate delete关键字用法简介
truncate delete关键字的用法区别



一、truncate delete关键字用法简介

truncate delete两个关键字都具有对数据进行删除功能
truncate delete关键字都不会对表中的索引 约束 默认值 等定义进行改变

 truncate table [表名]              ---清楚全部表数据
 ------------------------
 delete from [表名]                 ---删除所有表数据
 ------------------------    
 delete from [表名] where [条件]    ---删除指定行表数据


二、truncate delete关键字的用法区别

2.1 truncate table 清除表数据库后,会使标识列重新记数 会释放表空间
delete from 表数据之后,不会释放表空间,标识列不会重新记数
2.2 truncate table 是数据库级定义语言,当脚本被执行后,会立即提交,无法进行rollback 回滚操作
delete 操作会加入日志中,可以加入事务中,当其它执行条件出现异常时,可以采用rollback回滚整个操作
2.3 由于truncate 无日志记载,所以一旦数据操作异常,将出现重大安全事故,所以需谨慎使用