SQL 清空数据库所有表数据

作者:outlela  来源:本站原创   发布时间:2021-1-28 8:58:48

在某些特殊情况下,我们可能需要清空数据库所有表的数据,本次来探讨一下如何快速清空一个数据库。

我们知道清空表数据有两种写法:

1、DELETE语句不加条件:如

DELETE dbo.UserInfo

2、TRUNCATE TABLE语句:如下

TRUNCATE TABLE dbo.UserInfo

两者都能清除表数据,区别在于自增种子的变化:

DELETE:不会重置自增种子,如果现在自增种子到了100,即便把表清空,下次的种子数也是101

TRUNCATE TABLE:会重置自增种子,如果现在自增种子到了100,把表清空后,下次的种子数便是从1开始(假设种子是1开始的)


那如何清空一个数据库所有的表呢,很简单,看下图:

image.png

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 *,达到我们清空数据库所有表数据的需求。


*本文最后修改于:2021-1-28 9:19:41
本文标签: 数据库 SQL 清空 表数据 DELETE TRUNCATE CURSOR
本文由本站原创发布, 本文链接地址:https://outlela.com/Code/110.html
转载或引用请保留地址并注明出处:outlela.com