LINEで現役エンジニアに直接質問してみよう!登録無料

MySQLでテーブルを削除する(DROP TABLE)

テーブルを削除するには「DROP TABLE」コマンドを使います。

mysql> DROP TABLE users;
Query OK, 0 rows affected (0.16 sec)

DROP TABLEの基本

下記コマンドでテーブルを削除できます。

DROP TABLE テーブル名;

DROP TABLEを実行してみる

テーブルのを削除するには、事前に下記の3操作が必要です。

CREATE DATABASE sampleapp_development;
USE sampleapp_development;
CREATE TABLE users (id INT, email VARCHAR(255), password VARCHAR(255));

ここで初めてテーブルの削除が出来ます。

今、このようにテーブルが存在します。

mysql> SHOW TABLES;
+---------------------------------+
| Tables_in_sampleapp_development |
+---------------------------------+
| users                           |
+---------------------------------+
1 row in set (0.00 sec)

DROP TABLEを実行します。

mysql> DROP TABLE users;
Query OK, 0 rows affected (0.16 sec)

実際にテーブルの一覧を確認すると、テーブルが消えていることが確認出来ます。

mysql> SHOW TABLES;
Empty set (0.01 sec)

「Empty set」とは、テーブルが全く無いという意味です。

ここまでが「DROP TABLE」の基本です。

この後は、テーブルが存在した時のみ削除する方法や、-を使った名前のテーブルを削除する方法などを解説していきます。

テーブルが存在しない時のみ削除する方法

テーブルが存在しない時にDROP TABLEを実行すると、下記のようにエラーになります。

mysql> DROP TABLE users;
ERROR 1051 (42S02): Unknown table 'sampleapp_development.users'

存在した時のみ削除処理を行うには、DROP TABLE IF EXISTS テーブル名;を使いましょう。

何回実行してもエラーになることはありません。

mysql> DROP TABLE IF EXISTS users;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> DROP TABLE IF EXISTS users;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> DROP TABLE IF EXISTS users;
Query OK, 0 rows affected, 1 warning (0.00 sec)

「-」を使った名前のテーブルを削除する方法

-を使ったテーブルを削除する方法を紹介します。-を使ったテーブルを削除しようとすると、下記のようにエラーになります。

mysql> DROP TABLE sampleapp-development;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-development' at line 1

エラーメッセージを見ると「-development部分が構文エラーですよ」となっていますね。

このように、-を使うと、思わぬエラーの原因になったりします。トラブルを避けるためにも今後は使わないようにしましょう!

このデータベースを削除するには、`(バッククオート)でデータベース名を囲いましょう。

mysql> DROP TABLE `sampleapp-development`;
Query OK, 0 rows affected (0.01 sec)

これで正常に削除出来ます。

まとめ

  • テーブルを削除するにはDROP TABLEを使う
  • テーブルが存在しなかった場合の作成はDROP TABLE IF EXISTS データベース名を使う
  • -を使ったデータベース名は`(バッククオート)で囲むと削除できる

以上、テーブルの削除方法をアキ(@hackablejp)が解説しました!

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。