我不想输入所有表的名称来删除所有表。这可能只用一个查询吗?


当前回答

我知道这个问题很古老,但每次我需要这个代码..顺便说一下,如果你有表、视图、函数和过程,你可以通过这个脚本删除它们。 为什么我要发布这个脚本?因为如果你删除了所有的表,你就需要删除所有的视图,如果你有函数和过程,你也需要删除它 我希望它能帮助到别人

DECLARE @sql NVARCHAR(max)=''

 SELECT @sql += ' Drop table ' + QUOTENAME(TABLE_SCHEMA) + '.'+ QUOTENAME(TABLE_NAME) 
+ '; '
FROM   INFORMATION_SCHEMA.TABLES
WHERE  TABLE_TYPE = 'BASE TABLE'

Exec Sp_executesql @sql


 DECLARE @sql VARCHAR(MAX) = ''
    , @crlf VARCHAR(2) = CHAR(13) + CHAR(10) ;

 SELECT @sql = @sql + 'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + 
 QUOTENAME(v.name) +';' + @crlf
 FROM   sys.views v

 PRINT @sql;
 EXEC(@sql);

 declare @procName varchar(500)
 declare cur cursor 

 for select [name] from sys.objects where type = 'p'
 open cur
 fetch next from cur into @procName
 while @@fetch_status = 0
 begin
  exec('drop procedure [' + @procName + ']')
fetch next from cur into @procName
 end
  close cur
  deallocate cur

  Declare @sql NVARCHAR(MAX) = N'';

    SELECT @sql = @sql + N' DROP FUNCTION ' 
               + QUOTENAME(SCHEMA_NAME(schema_id)) 
               + N'.' + QUOTENAME(name)
    FROM sys.objects
  WHERE type_desc LIKE '%FUNCTION%';

   Exec sp_executesql @sql
  GO

其他回答

如果你想只使用一个SQL查询来删除所有的表,你可以使用这个:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

这是一个隐藏在sql server中的存储过程,将对连接的数据库中的每个表执行。

注意:由于依赖关系,您可能需要执行几次查询来删除所有表。

注意2:为了避免第一个注意,在运行查询之前,首先检查是否存在与任何表的外键关系。如果有,那么通过运行下面的查询禁用外键约束:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

如果你不想输入,你可以这样创建语句:

USE Databasename

SELECT  'DROP TABLE [' + name + '];'
FROM    sys.tables

然后复制并粘贴到一个新的SSMS窗口中以运行它。

作为戴夫的后续。Gugg的回答是,这将是某人需要在MySQL中获得所有DROP TABLE行的代码:

SELECT CONCAT('DROP TABLE ', TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.tables
WHERE TABLE_SCHEMA = 'your_database_name'

如果你使用oracle或sqlite,我会对所有表进行循环:

FOR i IN (SELECT ut.table_name
              FROM USER_TABLES ut) LOOP
    EXECUTE IMMEDIATE 'drop table '|| i.table_name ||' CASCADE CONSTRAINTS ';
  END LOOP;

试试这个

DROP DATABASE database_name;
CREATE DATABASE database_name;

这将删除数据库并创建一个具有相同名称的新数据库