Suelta varias tablas de una sola vez en mysql

102

Cómo eliminar varias tablas de una sola base de datos con un solo comando. algo como,

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

donde a, b, c son las tablas de la prueba de la base de datos.

Krunal
fuente
17
ya te respondes a ti mismo
ajreal
de acuerdo con las respuestas a continuación, en HeidiSQL puede filtrar tablas por su nombre (cuadro de texto superior), escribir DROP TABLE en una consulta y hacer doble clic en cada tabla deseada para agregar su nombre a la consulta (poner una coma entre ellos) y luego presionar F9 para ejecutar. Un poco fuera de tema, pero vine aquí para eso.
Ivan Ferrer Villa
Para las personas que desean eliminar varias tablas con el mismo prefijo, ya DROP TABLE table_prefix_*que no funciona con el carácter estrella: stackoverflow.com/questions/6758652/…
baptx

Respuestas:

135

Ejemplo:

Digamos que la tabla A tiene dos hijos B y C. Entonces podemos usar la siguiente sintaxis para descartar todas las tablas.

DROP TABLE IF EXISTS B,C,A;

Esto se puede colocar al principio de la secuencia de comandos en lugar de eliminar individualmente cada tabla.

Leniel Maccaferri
fuente
29
Quizás vale la pena señalar que las tablas no necesitan tener ninguna relación. Pueden ser completamente independientes y esta sintaxis seguirá funcionando.
crmpicco
76
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

Entonces no tiene que preocuparse por colocarlos en el orden correcto, ni si realmente existen.

NB, esto es solo para MySQL (como en la pregunta). Es probable que otras bases de datos tengan diferentes métodos para hacer esto.

OrangeDog
fuente
3
Me has salvado de muchos problemas girando los cheques fkey (y).
HungryCoder
0

Una forma perezosa de hacer esto si hay muchas tablas para eliminar.

  1. Obtener tabla usando el siguiente

    • Para el servidor sql - SELECCIONE CONCAT (nombre, ',') Table_Name FROM SYS.tables;
    • Para oralce - SELECT CONCAT (TABLE_NAME, ',') FROM SYS.ALL_TABLES;
  2. Copie y pegue los nombres de las tablas del conjunto de resultados y péguelo después del comando DROP.

Javaughn Jackson
fuente
-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
usuario4774666
fuente