# HiveのDROP TABLE文の構文

`DROP TABLE`文は、Treasure Data CDPのデータベースからテーブルとそのデータを削除します。データエンジニアは、Trinoに切り替えることなくHiveQLから直接テーブルを削除するために使用します（例: データ取り込みワークフロー終了時のステージングテーブルの削除）。

Note
このページでは、Hiveクエリエンジンでサポートされる`DROP TABLE`の構文について説明します。TrinoクエリエンジンでもDROP TABLEはサポートされていますが、構文がわずかに異なります。

## 構文

```sql
DROP TABLE [IF EXISTS] [<database_name>.]<table_name> [PURGE]
```

各要素の意味:

- <table_name> は削除するテーブルの名前です。
- `IF EXISTS` を指定すると、テーブルが存在しない場合に文が成功することが明示されます。
- `PURGE` はHiveQLとの互換性のために受け付けられますが、効果はありません。[PURGEは効果を持たない](#purge%E3%81%AF%E5%8A%B9%E6%9E%9C%E3%82%92%E6%8C%81%E3%81%9F%E3%81%AA%E3%81%84)を参照してください。


Note
存在しないテーブルを削除した場合、`IF EXISTS`を省略していてもエラーにならず成功します。

## 例

テーブルを削除する:

```sql
DROP TABLE my_database.staging_events;
```

テーブルが存在する場合のみ削除する:

```sql
DROP TABLE IF EXISTS staging_events;
```

## 動作

### PURGEは効果を持たない

オープンソース版Hiveでは、`PURGE`キーワードを指定するとHDFSのゴミ箱（Trash）を経由せず、データが即座に削除され復旧できなくなります。Treasure Data CDPでは、削除されたテーブルデータのライフサイクルはプラットフォーム側で管理されるため、`PURGE`は構文として受け付けられますが無視されます。`DROP TABLE t`と`DROP TABLE t PURGE`は同じ動作になります。

### 権限

クエリを実行するユーザーには、対象テーブルを削除する権限が必要です。権限がない場合、文は認可エラーで失敗し、テーブルは削除されません。

## 制限事項

### FOR REPLICATION句

`FOR [METADATA] REPLICATION('<event_id>')`句はサポートされておらず、エラーで拒否されます。