Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

テーブルを削除するSQLクエリ

データベース上に作成したテーブルを削除する場合もありますよね。

作成したテーブルを削除するには「DROP TABLE文」を使います。

この記事では、テーブルを削除するDROP TABLE文の使い方や、それ以外の方法について解説します。

イチから丁寧に説明しますので、一緒に方法を覚えていきましょう。

DROP TABLE構文

DROP TABLE文は、次のように記述します。

DROP TABLE テーブル名;

DROP TABLE文は、「CREATE」や「ALTER TABLE」とは異なり、オプションがなく非常にシンプルなSQLクエリです。

では実際に、テーブルを作成して削除してみましょう。

サンプルで次のテーブルを用意しました。

mysql> CREATE TABLE sample_list(id int);

「SHOW TABLES」クエリを実行することで、テーブルが作成できているか確認できます。

テーブルが作成された状態で、削除してみましょう。次のように実行してください。

mysql> DROP TABLE sample_list;

「Query OK」と表示されていれば削除できています。

では、もう一度「SHOW TABLES」クエリでテーブル一覧を確認してみましょう。

sample_list テーブルが削除されているはずです。

Oracleでテーブル削除

テーブルの削除文を前述しましたが、Oracleデータベースではどのような構文になるのでしょうか。

Oracleでも基本的な構文は同じですが、いくつかパターンがあるので確認していきます。

まず、テーブルを削除するのは前述の通りです。

DROP TABLE テーブル名;

次に、テーブルを制約も含めて削除する場合は次のように記述します。

DROP TABLE テーブル名 CASCADE CONSTRAINTS;

最後に、テーブルを制約も含め、完全に削除する場合は次のように記述しましょう。

DROP TABLE テーブル名 CASCADE CONSTRAINTS PURGE;

このように、削除レベルによってSQLクエリが異なるので、状況に合わせて使い分ける必要があります。

ポテパンダの一言メモ

テーブルの制約も含めて削除:CASCADE CONSTRAINTS

テーブルを制約も含めて完全に削除:CASCADE CONSTRAINTS PURGE

PostgreSQLでテーブル削除

PostgreSQLでテーブル削除を削除する場合も、構文は同じです。

次のように記述しましょう。

DROP TABLE テーブル名;

ただし、テーブルに対してビューを作成している場合はエラーが発生し、テーブルの削除に失敗してしまいます。

このように、ビューを作成している場合などには、DROP TABLE文の実行に合わせて「CASCADE」の指定が必要です。

DROP TABLE テーブル名 CASCADE;

CASCADEを記述してテーブルを削除すると、 ビューも合わせて削除されます。

ポテパンダの一言メモ

ビューも含めてすべて削除する際には、「CASCADE」を使いましょう!

DELETE文・TRUNCATE文との違いは?

DROP 以外にも DELETE や TRUNCATE があるけど、違いは何ですか?

それぞれの違いは「テーブルの削除可否」と「条件指定の可否」です!それぞれの使い方を見ていきましょう。

上記の質問のような疑問をもっている人もいるかもしれません。

似たような機能をもったクエリではありますが、それぞれの動きは異なります。

ここでは、DROP と DELETE 、 TRUNCATE の違いを確認していきましょう。

DELETE文

DELETE文は、テーブル内のデータ(行)を削除するクエリです。

実行するには次のように記述します。

DELETE FROM テーブル名;

WHERE句で条件を指定しない場合、テーブル内のすべてのデータが削除されます。

特定のデータだけを削除したい場合は、必ずWHERE句で条件指定をしましょう。

■WHERE句で条件を指定した場合のサンプル

DELETE FROM テーブル名 WHERE user_id = 1;

上記のクエリを実行した場合、user_id カラムの値が「1」であるデータだけが削除され、それ以外のデータは削除されません。

また、DROP TABLE文とは異なり、DELETE文ではテーブルは削除されないことも覚えておきましょう。

ポテパンダの一言メモ

DELETE文は、条件を指定してデータの削除が可能!ただし、テーブル削除はできません。

【関連記事】
▶︎【サンプル有り】SQLでのデータ削除方法を知ろう!【DELETE/TRUNCATE】

TRUNCATE文

TRUNCATE文は、テーブル内のオブジェクトを完全に削除するクエリです。

実行するには次のように記述します。

TRUNCATE TABLE テーブル名;

TRUNCATE文はDELETE文とは異なり、WHERE句での条件指定ができません。

そのため、実行後のテーブル内のデータは必ずすべて削除されます。

DROP TABLE文とは異なり、TRUNCATE文ではテーブルは削除されません。

ポテパンダの一言メモ

TRUNCATE文は、条件を指定してデータの削除ができません。また、テーブル削除もできません!

【関連記事】
▶︎SQL truncate 高速データ削除 deleteやdropとの違いとDBMS間の差異
▶︎MySQLのtruncateとは?テーブル削除と切り捨ての2つの機能について解説

DELETE文でテーブルの削除は可能?

前述したように、DELETE文はテーブル内のデータを削除するクエリです。

そのため、テーブル自体の削除はできないので注意しましょう。

テーブルを削除したい場合は DROP TABLE文 を使います。

テーブルの削除を複数・全て行える?

複数のテーブルをまとめて削除したいのですが、できますか?

はい、できます!そのやり方をここでは見ていきましょう。

テーブルを削除するために、1回1回 DROP TABLE文 を実行するのは、数が多い場合に大変です。

テーブルを複数まとめて削除したい場合は、次のようにテーブル名をカンマ区切りで記述します。

DROP TABLE テーブル名1, テーブル名2, テーブル名3, ...;

これでテーブルを複数削除できるので覚えておきましょう!

テーブル削除後に復活はできる?

テーブルを誤って消してしまった場合に、復活・復元させたい場合もあるかもしれません。

Oracleデータベースでは、Oracle10g から「ごみ箱」の機能が追加されたため、DROP TABLE文で削除後にごみ箱から復活させることができます。

ただし、PURGE句を付けて削除した場合は、ごみ箱からも完全に削除されているため復活できません。

復活させたい場合は、次のように記述します。

FLASHBACK TABLE テーブル名 TO BEFORE DROP;

これでテーブルの復活が可能です。

ちなみに、ゴミ箱にあるテーブル名を見るには、SQL*Plus で以下を実行することで確認できます。

SHOW RECYCLEBIN

まとめ

SQLでテーブルを削除する方法や構文ごとの違いについて解説しました。

テーブル削除のSQLクエリはオプションなどの指定もなく、比較的カンタンに実行可能です。

もしテーブルの削除のやり方で迷った場合は、ぜひ参考にしてください!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。