この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
更新日時:2026-10-03 03:36:16
タイトル: 表の削除
SEOタイトル: DROP TABLE の CASCADE CONSTRAINTS・PURGE とは|Oracle 削除と復元
| この記事の要点 |
- DROP TABLE はテーブルを定義・データごと削除する DDL 文
- Oracle:
DROP TABLE 表 [CASCADE CONSTRAINTS] [PURGE]; - CASCADE CONSTRAINTS: 他表からの参照制約も一緒に削除
- PURGE: ごみ箱(Recycle Bin)に入れず即時削除 — 復元不可
- 誤って削除した場合は
FLASHBACK TABLE ... TO BEFORE DROP で復元できる(PURGE していなければ)
|
DROP TABLE とは
DROP TABLE はテーブルの定義(メタ情報)と格納データを同時に削除する DDL 文です。データだけ消したい場合は TRUNCATE や DELETE を使います。
構文
-- Oracle
DROP TABLE 表名 [CASCADE CONSTRAINTS] [PURGE];
-- MySQL
DROP TABLE [IF EXISTS] 表名 [, 表名 ...];
-- PostgreSQL
DROP TABLE [IF EXISTS] 表名 [, 表名 ...] [CASCADE | RESTRICT];
-- SQL Server
DROP TABLE [IF EXISTS] 表名;
Oracle のオプション
| オプション | 意味 |
| なし | テーブルは Recycle Bin に移動。FLASHBACK で復元可能 |
CASCADE CONSTRAINTS | 他表からの参照整合性制約(外部キー)も削除 |
PURGE | Recycle Bin に入れずに即時削除。復元不可 |
例
-- 普通に削除(ごみ箱に入る)
DROP TABLE emp;
-- 外部キー参照ごと削除
DROP TABLE dept CASCADE CONSTRAINTS;
-- 完全削除(復元不可)
DROP TABLE emp PURGE;
-- 参照と領域を同時に解放
DROP TABLE dept CASCADE CONSTRAINTS PURGE;
誤って削除したテーブルの復元(Oracle)
PURGE を付けずに DROP したテーブルは Recycle Bin に格納され、FLASHBACK で復元できます。
-- ごみ箱の中身を確認
SELECT object_name, original_name, droptime FROM RECYCLEBIN;
-- テーブルを直前の状態に復元
FLASHBACK TABLE emp TO BEFORE DROP;
-- 復元先の名前を変えたい場合
FLASHBACK TABLE emp TO BEFORE DROP RENAME TO emp_restored;
-- ごみ箱を空にする
PURGE RECYCLEBIN;
TRUNCATE / DELETE との違い
| SQL | 定義 | データ | ロールバック | 高速 |
DROP TABLE | 削除 | 削除 | ×(DDL) | ○ |
TRUNCATE TABLE | 残る | 削除(領域も解放) | ×(DDL) | ◎ |
DELETE FROM ... | 残る | 削除 | ○(DML) | △ |
注意点
- DROP TABLE は DDL なので暗黙コミットが発生する DBMS が多い(Oracle / MySQL など)。ロールバック不可
- 外部キーで参照されているテーブルは、参照側を削除するか
CASCADE オプションが必要
PURGE は取り返しがつかない。本番では事前バックアップを必須に
- ビュー / シノニム / プロシージャは無効化(INVALID)になるだけで、自動削除はされない
関連記事