📜  截断所有表 - SQL (1)

📅  最后修改于: 2023-12-03 15:09:58.754000             🧑  作者: Mango

截断所有表 - SQL

在 SQL 中,截断表(英语缩写为 TRUNCATE)是一种非常常见的操作。它可以快速地清空一个表,并且比 DELETE 语句效率更高。

如果你需要清空整个数据库中的所有表,那么一个简单的方法是通过循环遍历数据库中的所有表,并对每个表都执行 TRUNCATE 操作。下面是一个示例 SQL 脚本:

DECLARE @tablename NVARCHAR(100)
DECLARE @sql NVARCHAR(MAX)

DECLARE table_cursor CURSOR FOR 
SELECT name FROM sys.tables

OPEN table_cursor
FETCH NEXT FROM table_cursor INTO @tablename

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @sql = 'TRUNCATE TABLE ' + @tablename
    EXEC sp_executesql @sql
    FETCH NEXT FROM table_cursor INTO @tablename
END

CLOSE table_cursor
DEALLOCATE table_cursor

上面的脚本使用了 SQL Server 的系统视图 sys.tables,它可以查询到当前数据库中所有表的名称。然后通过循环遍历这些表,并对每个表执行 TRUNCATE 操作来清空表中的所有数据。

需要注意的是,TRUNCATE 操作是不可逆的,一旦执行了该操作,表中的数据就永远丢失了。因此在实际应用中,务必要慎重考虑执行该操作。

以上是针对 SQL Server 的示例,不同数据库可能有不同的语法和系统视图,需要根据具体的数据库进行相应的调整。