【SQL】テーブルを削除するDROP TABLE文の使い方をていねいに解説
  • facebookページ
  • twitterページ
  • 2020.09.18

    【SQL】テーブルを削除するDROP TABLE文の使い方をていねいに解説

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

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

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

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

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

    DROP TABLE構文

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

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

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

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

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

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

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

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

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

    Oracleでテーブル削除

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

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

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

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

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

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

    ポテパンダの一言メモ

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

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

    PostgreSQLでテーブル削除

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

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

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

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

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

    ポテパンダの一言メモ

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

    DELETE文・TRUNCATE文との違いは?

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

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

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

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

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

    DELETE文

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

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

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

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

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

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

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

    ポテパンダの一言メモ

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

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

    TRUNCATE文

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

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

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

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

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

    ポテパンダの一言メモ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    まとめ

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

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

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



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE