web-dev-qa-db-fra.com

Comment supprimer toutes les tables MySQL de la ligne de commande?

En général, j'ouvre Terminal.app et me connecte à une base de données MySQL distante.

Ensuite, j'utilise cette commande pour supprimer une table:

mysql> drop table [table name];

Mais ce dont j'ai besoin, c'est de la ligne de commande pour supprimer toutes les tables de la base de données.

Si j'utilise:

mysql> drop database [database name];

Je vais détruire complètement la base de données et je ne pourrai plus créer de tables. Ai-je raison?

29
chefnelone

Vous pouvez supprimer la base de données, puis la recréer immédiatement:

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

Vous pouvez également utiliser un script pour supprimer chaque table de la base de données.

27
William Jackson

Vous pouvez essayer la commande suivante:

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME

Ou:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME

DB_NAME est le nom de votre base de données. Les informations d'identification de la base de données que vous pouvez spécifier dans ~/.my.cnf ou en les ajoutant à la commande (par exemple -uroot -proot).

Cette méthode présente certains avantages par rapport à la suppression et à la création de la base de données au cas où votre utilisateur de la base de données ne serait pas autorisé à la supprimer.

10
kenorb

mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE% ;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE

2
sveilleux2