DROP TABLE

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

テーブルが EXTERNAL テーブルでない場合は、テーブルを削除し、テーブルに関連付けられているディレクトリをファイル システムから削除します。 テーブルが存在しない場合は、例外がスローされます。 テーブルをドロップするには、テーブルに対する MANAGE 権限を持っているか、その所有者であるか、テーブルが存在するスキーマ、カタログ、またはメタストアの所有者である必要があります。

外部テーブルの場合、関連するメタデータ情報のみがメタストア スキーマから削除されます。

テーブルを参照する外部キー制約も削除されます。

テーブルがキャッシュされている場合、コマンドはテーブルとそのすべての依存オブジェクトのキャッシュを解除します。

注記

Unity Catalog では、削除されたマネージド テーブルを回復するための UNDROP TABLE コマンドがサポートされています。 デフォルトでは、テーブルはドロップ後7日間回復可能で、カタログやスキーマレベルで回復期間を0(回復を無効にするため)または7〜30日に設定できます。 復旧期間の設定は パブリックプレビュー中です。 非同期のパージプロセスは、回復期間終了後に基礎となるデータファイルを永久に削除するため、テーブルが復元できなくなった後もファイルはクラウドテナントに残ることができます。 Unity カタログ でのマネージド テーブルの削除 と オブジェクト ストレージのライフサイクルに関する説明を参照してください。

構文

DROP TABLE [ IF EXISTS ] table_name [ FORCE ]
DROP {TEMP | TEMPORARY} TABLE table_name [IF EXISTS]

パラメーター

  • TEMP または TEMPORARY

    適用対象: チェック マークあり Databricks SQL

    指定した場合は、一時テーブルを削除します。 この名前の一時テーブルがセッションに存在しない場合、コマンドは エラー条件エラー TABLE_OR_VIEW_NOT_FOUND 発生します。

    指定しない場合、コマンドは永続的なテーブルのみを削除し、同じ修飾されていない名前の一時テーブルがセッションに存在する場合にエラーを発生させます。 一時テーブルが同じ名前を共有している場合に永続テーブルを削除するには、修飾名を使用します。

  • 存在する場合

    指定した場合、テーブルが存在しないときに TABLE_OR_VIEW_NOT_FOUND エラーがスローされません。

  • table_name

    削除されるテーブルの名前。 名前には、 時仕様またはオプション指定を含めてはなりません。 テーブルが見つからない場合、Azure Databricks で TABLE_OR_VIEW_NOT_FOUND エラーが発生します。 見つかったリレーションシップがテーブルでない場合、Azure Databricks は WRONG_COMMAND_FOR_OBJECT_TYPE エラーを発生させます。

  • フォース

    指定されている場合、依存する浅いクローンがあってもUnity Catalog管理のテーブルをドロップします。 FORCE 作業スペースが浅いクローンに対してドロップタイム保護を強制する場合のみ必要です。 もしCANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONEでDROP TABLEが失敗した場合は、FORCEで上書きしてください。 浅い複製については、「ベース テーブルを削除する」を参照してください。

例の一覧

-- Assumes a table named `employeetable` exists.
> DROP TABLE employeetable;

-- Assumes a table named `employeetable` exists in the `userdb` schema
> DROP TABLE userdb.employeetable;

-- Assumes a table named `employeetable` does not exist.
-- Throws TABLE_OR_VIEW_NOT_FOUND
> DROP TABLE employeetable;
  Error: TABLE_OR_VIEW_NOT_FOUND

-- Assumes a table named `employeetable` does not exist. Try with IF EXISTS
-- this time it will not throw exception
> DROP TABLE IF EXISTS employeetable;

-- Assumes a table named `employeetable` exists and has a shallow clone.
-- Where the workspace enforces drop-time protection for shallow clones,
-- a plain DROP throws CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE
> DROP TABLE employeetable;
  Error: CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE

-- Assumes a table named `employeetable` exists and has a shallow clone.
-- Drops the base table even when it has shallow clones. The referencing shallow clones stop working.
> DROP TABLE employeetable FORCE;

-- Creates and drops a temporary table
> CREATE TEMPORARY TABLE scratchpad(txt STRING);
> DROP TEMPORARY TABLE scratchpad;