Удаление нескольких таблиц одним выстрелом в MySQL

Как удалить несколько таблиц из одной базы данных одной командой. что-то типа,

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

где a,b,c — таблицы из теста базы данных.


person Krunal    schedule 07.02.2011    source источник
comment
ты уже сам себе ответил   -  person ajreal    schedule 07.02.2011
comment
согласно приведенным ниже ответам, в HeidiSQL вы можете фильтровать таблицы по их имени (верхнее текстовое поле), писать DROP TABLE в запрос и дважды щелкать каждую нужную таблицу, чтобы добавить ее имя к запросу (поставить запятую между ними), затем нажать F9 для выполнения . Немного не по теме, но за этим сюда.   -  person Ivan Ferrer Villa    schedule 21.02.2017
comment
Для людей, желающих удалить несколько таблиц с одним и тем же префиксом, поскольку DROP TABLE table_prefix_* не работает со звездочкой: stackoverflow.com/questions/6758652/   -  person baptx    schedule 20.04.2020


Ответы (3)


Мы можем использовать следующий синтаксис для удаления нескольких таблиц:

DROP TABLE IF EXISTS B,C,A;

Это можно поместить в начало скрипта вместо того, чтобы удалять каждую таблицу по отдельности.

person Leniel Maccaferri    schedule 07.02.2011
comment
Возможно, стоит отметить, что таблицы вообще не должны иметь никаких отношений. Они могут быть полностью независимыми, и этот синтаксис все равно будет работать. - person crmpicco; 19.02.2014

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

Тогда вам не нужно беспокоиться ни о том, чтобы отбросить их в правильном порядке, ни о том, существуют ли они на самом деле.

Н.Б. это только для MySQL (как в вопросе). Другие базы данных, вероятно, имеют другие методы для этого.

person OrangeDog    schedule 07.02.2011
comment
Вы избавили меня от многих хлопот, повернув галочки с ключом (y). - person HungryCoder; 11.07.2014
comment
Я по-прежнему получаю сообщение # 1451 — Удаление или обновление родительской записи не удается из-за ограничения внешнего ключа. Редактировать: я запускал это в phpmyadmin, и флажок для проверки внешнего ключа все еще был включен. Я думаю, вам не нужен запрос SET foreign_key_checks, просто используйте флажок. - person Black; 20.07.2021

Ленивый способ сделать это, если нужно удалить много таблиц.

  1. Получить таблицу, используя ниже

    • For sql server - SELECT CONCAT(name,',') Table_Name FROM SYS.tables;
    • Для устного использования - SELECT CONCAT(TABLE_NAME,',') FROM SYS.ALL_TABLES;
  2. Скопируйте и вставьте имена таблиц из набора результатов и вставьте их после команды DROP.

person Javaughn Jackson    schedule 24.02.2020