Déposez plusieurs tables en un seul coup dans mysql

102

Comment supprimer plusieurs tables d'une seule base de données en une seule commande. quelque chose comme,

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

où a, b, c sont les tables du test de base de données.

Krunal
la source
17
vous vous répondez déjà
ajreal
selon les réponses ci-dessous, dans HeidiSQL vous pouvez filtrer les tables par leur nom (zone de texte supérieure), écrire DROP TABLE dans une requête et double-cliquer sur chaque table souhaitée pour ajouter son nom à la requête (mettre une virgule entre elles) puis appuyer sur F9 pour l'exécuter. Un peu hors sujet mais je suis venu ici pour ça.
Ivan Ferrer Villa
Pour les personnes souhaitant supprimer plusieurs tables avec le même préfixe, car DROP TABLE table_prefix_*ne fonctionne pas avec le caractère étoile: stackoverflow.com/questions/6758652
...

Réponses:

135

Exemple:

Disons que la table A a deux enfants B et C. Ensuite, nous pouvons utiliser la syntaxe suivante pour supprimer toutes les tables.

DROP TABLE IF EXISTS B,C,A;

Cela peut être placé au début du script au lieu de supprimer individuellement chaque table.

Leniel Maccaferri
la source
29
Cela vaut peut-être la peine de souligner que les tables n'ont pas du tout besoin de relation. Ils peuvent être complètement indépendants et cette syntaxe fonctionnera toujours.
crmpicco
76
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

Ensuite, vous n'avez pas à vous soucier de les déposer dans le bon ordre, ni de savoir s'ils existent réellement.

NB ceci est pour MySQL uniquement (comme dans la question). D'autres bases de données ont probablement des méthodes différentes pour ce faire.

OrangeDog
la source
3
Vous m'avez sauvé de beaucoup de tracas en tournant les contrôles fkey (y).
HungryCoder du
0

Une manière paresseuse de faire cela s'il y a beaucoup de tables à supprimer.

  1. Obtenez le tableau en utilisant le ci-dessous

    • Pour le serveur SQL - SELECT CONCAT (nom, ',') Table_Name FROM SYS.tables;
    • Pour oralce - SELECT CONCAT (TABLE_NAME, ',') FROM SYS.ALL_TABLES;
  2. Copiez et collez les noms de table du jeu de résultats et collez-le après la commande DROP.

Javaughn Jackson
la source
-3
declare @sql1 nvarchar(max) 
SELECT @sql1 =
  STUFF(
         (
           select ' drop table dbo.[' + name + ']'

           FROM sys.sysobjects AS sobjects
           WHERE (xtype = 'U') AND (name LIKE 'GROUP_BASE_NEW_WORK_%')
           for xml path('')
        ),
     1, 1, '')

  execute sp_executesql @sql1
user4774666
la source