sql server删除所有表数据(保留表结构)

在SQL Server中,您可以使用以下两种主要方法来删除所有表的数据:

  1. 使用 TRUNCATE TABLE 语句:这个语句会删除表中的所有行,但保留表的结构。它比DELETE语句快,因为它不会触发触发器。

    USE YourDatabaseName;
    GO
     
    DECLARE @TableName nvarchar(128);
    DECLARE TableCursor CURSOR FOR
    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
     
    OPEN TableCursor
    FETCH NEXT FROM TableCursor INTO @TableName
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
        EXEC ('TRUNCATE TABLE ' + @TableName);
        FETCH NEXT FROM TableCursor INTO @TableName
    END
     
    CLOSE TableCursor
    DEALLOCATE TableCursor

    2. 使用 DELETE 语句:这个语句会删除表中的所有行,并且会触发删除触发器。如果您的表有触发器,您可能需要使用这种方法。

    USE YourDatabaseName;
    GO
     
    DECLARE @TableName nvarchar(128);
    DECLARE @SQL nvarchar(4000);
    DECLARE TableCursor CURSOR FOR
    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
     
    OPEN TableCursor
    FETCH NEXT FROM TableCursor INTO @TableName
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @SQL = 'DELETE FROM ' + @TableName;
        EXEC sp_executesql @SQL
        FETCH NEXT FROM TableCursor INTO @TableName
    END
     
    CLOSE TableCursor
    DEALLOCATE TableCursor

    在这两个例子中,请将 YourDatabaseName 替换为您的数据库名称。这两个脚本都使用游标遍历数据库中的所有表,并对每个表执行 TRUNCATE TABLE 或 DELETE。需要注意的是,这些操作是不可逆的,所以在执行之前请确保您有适当的备份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值