我在一个MySQL数据库中有一堆表,其中一些表是从phpbb_*开始的,我想将这些表全部删除。有人知道怎么做而不是做吗?
drop table <tablename>;每一次?就像一只公鸡?
drop table phpbb*或者类似的东西?
发布于 2012-10-28 15:49:48
您可以使用以下MySQL过程:
DELIMITER $$
CREATE PROCEDURE drop_tables_like(pattern VARCHAR(255), db VARCHAR(255))
BEGIN
SELECT @str_sql:=CONCAT('drop table ', GROUP_CONCAT(table_name))
FROM information_schema.tables
WHERE table_schema=db AND table_name LIKE pattern;
PREPARE stmt from @str_sql;
EXECUTE stmt;
DROP prepare stmt;
END$$
DELIMITER ;对于删除“test1”数据库中以“a”开头的所有表,可以运行:
CALL drop_tables_like('a%', 'test1');发布于 2018-01-29 18:58:53
为了添加到上面的答案,MYSQL返回一个错误ERROR 1046 (3D000): No database selected,如果在开始这个过程之前没有选择数据库。因此,将这个语句use <<db_name>>;放在上面的答案前面。订正的解决办法是:
use <<db_name>>;
DELIMITER $$
CREATE PROCEDURE drop_tables_like(pattern VARCHAR(255), db VARCHAR(255))
BEGIN
SELECT @str_sql:=CONCAT('drop table ', GROUP_CONCAT(table_name))
FROM information_schema.tables
WHERE table_schema=db AND table_name LIKE pattern;
PREPARE stmt from @str_sql;
EXECUTE stmt;
DROP prepare stmt;
END$$
DELIMITER ;
CALL drop_tables_like('a%', '<<db_name>>');确保用数据库的实际名称替换<>。干杯!
https://stackoverflow.com/questions/13110225
复制相似问题