131

如何通过一个命令从一个数据库中删除多个表。就像是,

> use test; 
> drop table a,b,c;

其中 a,b,c 是数据库测试中的表。

4

4 回答 4

186

我们可以使用以下语法来删除多个表:

DROP TABLE IF EXISTS B,C,A;

这可以放在脚本的开头,而不是单独删除每个表。

于 2011-02-07T14:12:33.753 回答
92
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

然后您不必担心以正确的顺序放置它们,也不必担心它们是否真的存在。

注意,这仅适用于 MySQL(如问题所示)。其他数据库可能有不同的方法来执行此操作。

于 2011-02-07T14:18:38.303 回答
1

如果有很多表要删除,这是一种懒惰的方式。

  1. 使用下面的获取表格

    • 对于 sql server - SELECT CONCAT(name,',') Table_Name FROM SYS.tables;
    • 对于 oralce - SELECT CONCAT(TABLE_NAME,',') FROM SYS.ALL_TABLES;
  2. 从结果集中复制并粘贴表名,并将其粘贴在 DROP 命令之后。

于 2020-02-24T16:59:49.183 回答
-3
declare @sql1 nvarchar(max) 
SELECT @sql1 =
  STUFF(
         (
           select ' drop table dbo.[' + name + ']'

           FROM sys.sysobjects AS sobjects
           WHERE (xtype = 'U') AND (name LIKE 'GROUP_BASE_NEW_WORK_%')
           for xml path('')
        ),
     1, 1, '')

  execute sp_executesql @sql1
于 2016-09-29T01:07:52.823 回答