¿Cómo eliminar todas las tablas MySQL de la línea de comandos sin los permisos de la base de datos DROP?

¿Cómo elimino todas las tablas en Windows MySQL, usando el símbolo del sistema? La razón por la que quiero hacer esto es que nuestro usuario tiene acceso a las caídas de la base de datos, pero no tiene acceso para volver a crear la base de datos, por esta razón debemos abandonar las tablas manualmente. ¿Hay alguna manera de dejar caer todas las tablas a la vez? Tenga en cuenta que la mayoría de las tablas están vinculadas con claves externas, por lo que deberían eliminarse en un orden específico.

    Puede generar una statement como esta: DROP TABLE t1, t2, t3, ... y luego use las declaraciones preparadas para ejecutarla:

     SET FOREIGN_KEY_CHECKS = 0; SET @tables = NULL; SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'database_name'; -- specify DB name here. SET @tables = CONCAT('DROP TABLE ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET FOREIGN_KEY_CHECKS = 1; 

    La versión de @Devart es correcta, pero aquí hay algunas mejoras para evitar errores. He editado la respuesta de @Devart, pero no fue aceptada.

     SET FOREIGN_KEY_CHECKS = 0; SET GROUP_CONCAT_MAX_LEN=32768; SET @tables = NULL; SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE()); SELECT IFNULL(@tables,'dummy') INTO @tables; SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET FOREIGN_KEY_CHECKS = 1; 

    Este script no generará un error con el resultado NULL en caso de que ya haya eliminado todas las tablas de la base de datos agregando al menos una tabla inexistente, “ficticia”.

    Y se corrigió en caso de que tenga muchas tablas.

    Y este pequeño cambio para dejar caer toda la vista existe en la base de datos

     SET FOREIGN_KEY_CHECKS = 0; SET GROUP_CONCAT_MAX_LEN=32768; SET @views = NULL; SELECT GROUP_CONCAT('`', TABLE_NAME, '`') INTO @views FROM information_schema.views WHERE table_schema = (SELECT DATABASE()); SELECT IFNULL(@views,'dummy') INTO @views; SET @views = CONCAT('DROP VIEW IF EXISTS ', @views); PREPARE stmt FROM @views; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET FOREIGN_KEY_CHECKS = 1; 

    Supone que ejecuta el script desde la base de datos que desea eliminar. O ejecuta esto antes:

     USE REPLACE_WITH_DATABASE_NAME_YOU_WANT_TO_DELETE; 

    Gracias a Steve Horvath por descubrir el problema con los apoyos.

    Prueba esto.

    Esto funciona incluso para tablas con restricciones (relaciones de clave externa). De forma alternativa, puede soltar la base de datos y volver a crearla, pero es posible que no tenga los permisos necesarios para hacerlo.

     mysqldump -u[USERNAME] -p[PASSWORD] \ --add-drop-table --no-data [DATABASE] | \ grep -e '^DROP \| FOREIGN_KEY_CHECKS' | \ mysql -u[USERNAME] -p[PASSWORD] [DATABASE] 

    Para superar los efectos de verificación de clave externa, agregue show table al final de la secuencia de comandos generada y ejecutar muchas veces hasta que el comando show table resulte en un conjunto vacío.

    Puede soltar la database y luego volver a crearla con el siguiente:

     mysql> drop database [database name]; mysql> create database [database name]; 

    La respuesta aceptada no funciona para las bases de datos que tienen un gran número de tablas, por ejemplo, las bases de datos Drupal. En su lugar, vea el script aquí: https://stackoverflow.com/a/12917793/1507877 que funciona en MySQL 5.5. PRECAUCIÓN: alrededor de la línea 11, hay un “WHERE table_schema = SCHEMA ();” En su lugar, debería ser “WHERE table_schema = ‘INSERT NAME OF DB EN EL QUE OCURRE LA IMPORTACIÓN’;”