在日常运维中我们常常会需要清空一些数据库的表数据,常规方法是使用DELETE语句
1 | DELETE FROM [表名] |
此方法的优点是可以根据条件删除数据(在表名后加where),但当需要全部清空一个表时使用此方法则会显得非常缓慢,因为DELETE是逐条删除的。
所以通常清空表时可以使用TRUNCATE TABLE来清空数据表
1 | TRUNCATE TABLE [表名] |
此方法无论数据库表有多少行数据都是秒删,其本质就是重建一个空表的意思。
当然有时候需要条件删除也可以使用此方法,即首先备份需要保留的数据到另一个临时表中,将本表清除后再将临时表的数据插入到本表中,方法如下
1 2 3 4 5 6 7 8 9 | IF object_id('tempdb..#[临时表]') IS NOT NULL --确认是否已存在 BEGIN DROP TABLE #temp_table --删除待用临时表 END SELECT * INTO #临时表 FROM [本表] WHERE 条件 --创建临时表并拷贝数据 TRUNCATE TABLE [本表] --重建表 INSERT [本表] SELECT * FROM #临时表 --将临时表插入本表 DROP TABLE #临时表 --删除临时表 |
更多SQL操作技巧欢迎交流讨论,谢谢关注。
BeiTown
2013.08.02