オラクルでテーブル一覧を表示して特定のテーブルを削除する手順

オラクルでテーブル一覧を表示してテーブルを削除するまでのコマンド

システム開発、保守をしていると、オラクルのデータベースへ登録されたテーブルから特定のテーブルを削除したいことがあります。実際にどのようなSQLコマンドを入力するのかまとめました。



インスタンス内に存在するテーブルをすべて表示する

データベースのインスタンス内に存在するテーブル一覧を表示するコマンドです。

インスタンス内のテーブル一覧を表示するコマンド

テーブル一覧を表示するには、以下のコマンドを入力します。

SQL> SELECT TNAME FROM TAB;

テーブル一覧を表示するコマンドの結果

下記の通り、そのインスタンス内に存在するテーブル名が一覧ですべて表示されます。

SQL> SELECT TNAME FROM TAB;
LOGIN_TABLE
USER_TABLE
PASS_TABLE

なお、以下のコマンドでも同じ結果が得られます。

SQL> SELECT TABLE_NAME FROM USER_TABLES;

一覧表示したテーブルから特定のテーブルを削除する

一覧表示した中からテーブルを削除するには、以下のコマンドを実行します。例では「USER_TABLE」テーブルを削除します。

SQL> DROP TABLE USER_TABLE;

オラクルのテーブルが削除できない場合の削除方法

オラクルのテーブルを削除した際、エラーが出て削除できない場合、「テーブルに制約が追加されているために削除できない」という可能性があります。

テーブルの制約とは

テーブルの制約とは、「テーブルの項目の一部に、入力値の制限を設ける。また、他テーブルの項目を参照する。」ことを意味します。

具体的には、下記のとおりです。

制約名制約の内容
主キー制約 (PRIMARY KEY)テーブルの項目の一部を主キーと定義すると、その項目に同一の値を入力することができない。また、未入力が禁止される。
一意制約 (UNIQUE)主キーでは無いが、その項目に同一の値を入力することができない。
NOTNULL制約 (NOT NULL)未入力が禁止される。
チェック制約 (CHECK)入力できる値に一定の制約を設ける。例えば、0から5までのみ入力可能とする等。
外部参照制約 (REFERENCES)他テーブルの主キー項目を参照する、または一意の項目を参照する。

テーブルを制約も含めて削除するコマンド

オラクルのテーブルを削除した際にエラーが出る場合、大半のケースでは制約が付いたテーブルを削除しようとしたためで、制約が付いたテーブルは「DROP TABLE テーブル名;」のコマンドで削除できない。

制約が付いたテーブルは、下記のコマンドで削除します。

SQL> DROP TABLE テーブル名 CASCADE CONSTRAINTS;

ただし、上記コマンドは「削除したテーブルをオラクルのゴミ箱(Windowsのゴミ箱と同様)に入れる」ための
削除コマンドとなります。

削除したテーブルをゴミ箱から復元したい場合のコマンドは下記の通りです。

SQL> FLASHBACK TABLE テーブル名 TO BEFORE DROP ;

テーブルを制約も含め完全に削除

テーブルを制約も含めて、ゴミ箱にも入れず完全に削除(復元できない)するコマンドは下記の通りです。

SQL> DROP TABLE テーブル名 CASCADE CONSTRAINTS PURGE;