MySQL: как удалить несколько таблиц с помощью одного запроса?

Я хочу легко удалить несколько таблиц без фактического перечисления имен таблиц в запросе на отбрасывание, а таблицы, которые нужно удалить, имеют префикс: 'wp _'

Ответ 1

Просто поделитесь одним из решений:

mysql > SELECT CONCAT (                    "DROP TABLE",
                   GROUP_CONCAT (TABLE_NAME)            ) AS stmt

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = "your_db_name" И TABLE_NAME LIKE "ur условие" в outfile"/tmp/a.txt ';

mysql > source/tmp/a.txt;

Ответ 2

Я использовал запрос, очень похожий на Angelin's. Если у вас больше нескольких таблиц, нужно увеличить максимальную длину group_concat. В противном случае запрос будет barf на усеченной строке, возвращаемой group_concat.

Это мои 10 центов:

-- Increase memory to avoid truncating string, adjust according to your needs
SET group_concat_max_len = 1024 * 1024 * 10;
-- Generate drop command and assign to variable
SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE 'my_table%';
-- Drop tables
PREPARE str FROM @dropcmd; EXECUTE str; DEALLOCATE PREPARE str;

Ответ 3

Простое решение без риска ошибки:

mysqldump создать файл, содержащий команду DROP, например

DROP TABLE IF EXISTS `wp_matable`;

a 'grep' с "DROP TABLE wp_" дают команды для выполнения

поэтому drop создается с помощью тезисов trhee lines (вы можете отредактировать drop.sql, чтобы проверить, какие таблицы будут отброшены раньше)

mysqldump -u user -p database > dump.sql 
grep "DROP TABLE `wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql

Ответ 4

Будьте осторожны с "_", нужно записать с "\" раньше в Mysql:

SELECT CONCAT('DROP TABLE',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE '**my\\_table**%';

Ответ 5

Для большого решения mysqldump лучше использовать опцию --skip-quote-names

mysqldump --skip-quote-names -u user -p database > dump.sql 
grep "DROP TABLE wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql

Вы избавляетесь от обратных ссылок в именах таблиц. Компонент grep не будет работать в некоторых средах с обратными окнами.

Ответ 6

Удаление одной таблицы в mysql:

ТАБЛИЦА DROP TABLE_NAME;

Ответ 7

Перейдите в папку c:\xampp\mysql\data\your folder

Выберите несколько таблиц, которые вы хотите удалить, а затем нажмите кнопку удаления

Спасибо