在mysql中一次删除多个表

时间:2011-02-07 14:06:19

标签: mysql sql multiple-tables drop-table

如何在一个命令中从一个数据库中删除多个表。 像,

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

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

4 个答案:

答案 0 :(得分:111)

示例:

假设表A有两个孩子B和C.然后我们可以使用以下语法删除所有表。

DROP TABLE IF EXISTS B,C,A;

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

答案 1 :(得分:67)

SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

然后你不必担心以正确的顺序丢弃它们,也不用担心它们是否真的存在。

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

答案 2 :(得分:0)

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

  1. 使用以下内容获取表格

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

答案 3 :(得分:-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