コマンドラインからすべてのMySQLテーブルを削除するにはどうすればよいですか?


29

通常、Terminal.appを開き、リモートMySQLデータベースに接続します。

次に、このコマンドを使用してテーブルを削除します。

mysql> drop table [table name];

ただし、データベース内のすべてのテーブルを削除するコマンドラインが必要です。

私が使用する場合:

mysql> drop database [database name];

データベースを完全に破棄し、再びテーブルを作成することはできません。私は正しいですか?


回答:


27

データベースを削除して、すぐに再作成できます。

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

または、スクリプトを使用して、データベース内の各テーブルを削除できます。


[OK]を、念のために:私はこのラインを持つターミナルでリモート・データベースに接続:/アプリケーション/ MAMP /ライブラリ/ binに/ mysqlの-h 80.54.554.10 -u adm_user -p MY_DB。あなたが言ったようにデータベースを削除して作成した後、この接続値を変更する必要がありますか、それとも同じままですか?
チェフネロン

1
@chef-すべてのテーブルを削除してデータベース全体を削除しても、同じ効果はありません。テーブルのみを削除すると、データベース全体のアクセス許可が残ります。データベースを削除/再作成した場合はそうではありません。
ニフレ

10
@chefnelone:注意してください!!! データベースを削除すると、ストアドプロシージャとユーザー定義ビューも削除されます。
-RolandoMySQLDBA

私にとっては非常に明確です。スクリプトを使用して各テーブルを削除します。
チェフネロン

1
完全に安全ではありません。コメントhttp://stackoverflow.com/a/12403742/1713660
vladkras

10

次のコマンドを試すことができます。

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

または:

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

DB_NAMEデータベース名はどこにありますか。データベース資格情報は~/.my.cnf、コマンドで指定または追加できます(例:)-uroot -proot

この方法には、データベースユーザーがデータベースを削除する権限を持っていない場合に、データベースを削除および作成するよりもいくつかの利点があります。


1
素晴らしい2番目の例を確認しました。前に追加のフラグとしてデシベルの資格情報を追加--silentして-v/ --verboseそれぞれのように:--user=username --password=password --host=host.name
ここでは

良いアイデア。しかし、FOREIGN KEYがある場合は問題があります。私は| sort -r逆行に追加しますが、まだいくつかのdbと互換性がありません。
ファンチョン

2

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
スーパーユーザーへようこそ!これで質問に答えることができますが、なぜそうするのかを説明できれば、より良い答えになるでしょう。私たちは、何らかの説明と文脈を提供する包括的で高品質の答えを探しています。1行で答えるだけではありません。答えが正しい理由、理想的には引用を説明します。説明を含まない回答は削除される場合があります。また、フォーマットを確認してください。
G-Manは「Reinstate Monica」と言います

ドロップテーブルの後にセットFOREIGN_KEY_CHECKS = 1を忘れないで:参照stackoverflow.com/a/2873991/4306855 のmysql -u USERHERE -pPASSWORDHERE --silent --skip-列名が"SHOW TABLESを" -e DATABASENAMEHERE | xargs -L1 -I%echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE%; SET FOREIGN_KEY_CHECKS = 1; ' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE
toto21
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.