システム開発、保守をしていると、Oracleのデータベースへ登録されたテーブルから特定のテーブルを削除したいことがあります。実際にどのような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;
Oracleのテーブルが削除できない場合の削除方法
Oracleのテーブルを削除した際、エラーが出て削除できない場合、「テーブルに制約が追加されているために削除できない」という可能性があります。
テーブルの制約とは
テーブルの制約とは、「テーブルの項目の一部に、入力値の制限を設ける。また、他テーブルの項目を参照する。」ことを意味します。
具体的には、下記のとおりです。
制約名 | 制約の内容 |
---|---|
主キー制約 (PRIMARY KEY) | テーブルの項目の一部を主キーと定義すると、その項目に同一の値を入力することができない。また、未入力が禁止される。 |
一意制約 (UNIQUE) | 主キーでは無いが、その項目に同一の値を入力することができない。 |
NOTNULL制約 (NOT NULL) | 未入力が禁止される。 |
チェック制約 (CHECK) | 入力できる値に一定の制約を設ける。例えば、0から5までのみ入力可能とする等。 |
外部参照制約 (REFERENCES) | 他テーブルの主キー項目を参照する、または一意の項目を参照する。 |
テーブルを制約も含めて削除するコマンド
Oracleのテーブルを削除した際にエラーが出る場合、大半のケースでは制約が付いたテーブルを削除しようとしたためで、制約が付いたテーブルは「DROP TABLE テーブル名;」のコマンドで削除できない。
制約が付いたテーブルは、下記のコマンドで削除します。
SQL> DROP TABLE テーブル名 CASCADE CONSTRAINTS;
ただし、上記コマンドは「削除したテーブルをオラクルのゴミ箱(Windowsのゴミ箱と同様)に入れる」ための
削除コマンドとなります。
削除したテーブルをゴミ箱から復元したい場合のコマンドは下記の通りです。
SQL> FLASHBACK TABLE テーブル名 TO BEFORE DROP ;
テーブルを制約も含め完全に削除
テーブルを制約も含めて、ゴミ箱にも入れず完全に削除(復元できない)するコマンドは下記の通りです。
SQL> DROP TABLE テーブル名 CASCADE CONSTRAINTS PURGE;
