MySQL:如何删除所有以前缀开头的表?

Kir*_* RS 3 mysql

在我的数据库中有很多以 开头的表_elgg,现在我想删除所有带有此前缀的表。谁能给我一个解决方案?

提前致谢!

tom*_*bom 8

首先做一个

SELECT CONCAT('DROP TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '\_elgg%' 
AND TABLE_SCHEMA = 'your_database_name';
Run Code Online (Sandbox Code Playgroud)

并检查这是否为每个表返回正确的语句。如果要执行这些语句,请执行

SELECT CONCAT('DROP TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '\_elgg%' 
AND TABLE_SCHEMA = 'your_database_name' 
INTO OUTFILE '/tmp/whatever_filename';

SOURCE /tmp/whatever_filename;
Run Code Online (Sandbox Code Playgroud)

另一种方式:在命令行上,一气呵成,你可以

mysql -B databasename -uroot -prootpassword --disable-column-names  -e `mysql -B databasename -uroot -prootpassword --disable-column-names  -e "SELECT CONCAT('DROP TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '\_elgg%' AND TABLE_SCHEMA = 'your_database_name';"`
Run Code Online (Sandbox Code Playgroud)