在某些特殊情况下,我们可能需要清空数据库所有表的数据,本次来探讨一下如何快速清空一个数据库。
我们知道清空表数据有两种写法:
1、DELETE语句不加条件:如
DELETE dbo.UserInfo
2、TRUNCATE TABLE语句:如下
TRUNCATE TABLE dbo.UserInfo
两者都能清除表数据,区别在于自增种子的变化:
DELETE:不会重置自增种子,如果现在自增种子到了100,即便把表清空,下次的种子数也是101
TRUNCATE TABLE:会重置自增种子,如果现在自增种子到了100,把表清空后,下次的种子数便是从1开始(假设种子是1开始的)
那如何清空一个数据库所有的表呢,很简单,看下图:
SQL代码如下:
DECLARE c CURSOR FOR SELECT name FROM sysobjects WHERE xtype='U'; DECLARE @t VARCHAR(200); OPEN c; FETCH NEXT FROM c INTO @t; WHILE @@FETCH_STATUS=0 BEGIN EXEC('truncate table '+@t); FETCH NEXT FROM c INTO @t; END; CLOSE c; DEALLOCATE c;
代码解释:
1、先声明一个名为c的for循环游标,即获取数据库中所有的表名。如果对游标不是很熟悉,请前往《SqlServer FOR游标的简单使用》
2、在for循环中执行TRUNCATE TABLE *,达到我们清空数据库所有表数据的需求。