在 MySQL 中一次删除多个表

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

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

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

184441 次浏览

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

DROP TABLE IF EXISTS B,C,A;

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

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

那么您就不必担心以正确的顺序删除它们,也不必担心它们是否真的存在。

注意,这只是针对 MySQL 的。其他数据库可能有不同的方法来实现这一点。

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

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

  1. 使用下面的命令获取表

    • 对于 sql server-SELECT CONCAT (name,’,’) Table _ Name FROM SYS.tables;
    • 对于 orace-SELECT CONCAT (TABLE _ NAME,’,’) FROM SYS.ALL _ TABLE;
  2. 复制并粘贴结果集中的表名,并在 DROP 命令之后粘贴它。