Files
chill_notes/数据库/循环批量删除数据库表.md
2026-04-21 21:15:34 +08:00

59 lines
1.2 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 循环批量删除数据库表
> SQL Server 批量删除指定条件的表
## 存储过程
```sql
-- 创建临时表存储表名
CREATE TABLE #Man (
id INT IDENTITY(1,1),
tbName NVARCHAR(50)
)
-- 插入要删除的表名(排除保留表)
INSERT INTO #Man
SELECT name
FROM sys.tables
WHERE create_date <= '2018-03-10 15:36:35.687'
AND name NOT IN ('DeviceNetState', 'EphInfo', 'FilterStatistic', 'UserInfo', 'AlmInfo')
ORDER BY create_date DESC
-- 确认要删除的表
SELECT * FROM #Man
-- 开始删除
DECLARE @i INT = 1
DECLARE @count INT
SELECT @count = COUNT(*) FROM #Man
DECLARE @str NVARCHAR(500)
DECLARE @tb NVARCHAR(50)
WHILE (@i <= @count)
BEGIN
SELECT @tb = ISNULL(tbName, '') FROM #Man WHERE id = @i
SET @str = 'DROP TABLE [' + @tb + ']'
EXEC(@str)
SET @i = @i + 1
END
-- 清理临时表
DROP TABLE #Man
```
---
## 安全建议
1. **先 SELECT 确认**:删除前先只 SELECT确认无误再执行 DELETE
2. **排除保留表**:一定要排除系统表和重要业务表
3. **备份**:生产环境先备份再执行
4. **分批执行**:大量删除时分批进行,避免锁表时间过长
---
> ⚠️ **警告**:此操作不可逆,执行前务必确认!