MySQL删除表

时间:2011-02-10 14:38:02

标签: mysql sql-drop

我将使用什么语法来删除多个具有类似模式的表?类似的东西:

DROP TABLES FROM `Database1` LIKE "SubTable*"

4 个答案:

答案 0 :(得分:3)

由于预处理语句支持DROP TABLE,因此可以通过这种方式完成 -

SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables 
  WHERE table_schema = 'Database1' AND table_name LIKE 'SubTable%';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

答案 1 :(得分:2)

this question所述,这里给出的答案(Angelin和Devart)在没有首先增加group_concat限制的情况下不会在所有情况下都有效,如下所示:

SET group_concat_max_len = 1024 * 1024 * 10;

答案 2 :(得分:1)

没有。但您可以从information_schema数据库中选择表名:

select table_name
  from information_schema.tables
 where table_schema = 'Database1'
   and table_name like 'SubTable%'

然后迭代结果集中的表名并删除它们

答案 3 :(得分:0)

  

的MySQL> SELECT CONCAT(“DROP TABLE”,GROUP_CONCAT(TABLE_NAME))AS   语句

     

FROM information_schema.TABLES

     

WHERE TABLE_SCHEMA =“your_db_name”AND TABLE_NAME LIKE“ur condition”   进入outfile'/tmp/a.txt';

     

的MySQL>来源/tmp/a.txt;