适用于:
Databricks SQL
Databricks Runtime
删除表,并从文件系统中删除与表关联的目录(如果该表不是 EXTERNAL 表)。 如果该表不存在,则会引发异常。
若要删除表,您必须对该表具有 MANAGE 权限,或者是该表、表所在的架构、目录或元存储的所有者。
对于外部表,仅从元存储架构中删除关联的元数据信息。
引用表的任何外键约束也会被删除。
如果缓存表,该命令将取消缓存表及其所有依赖项。
注意
Unity 目录支持 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 错误。
-
要删除的表的名称。 名称不得包含 时态规范或选项规范。 如果找不到表,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。 如果找到的关系不是 Azure Databricks 的表,则引发 WRONG_COMMAND_FOR_OBJECT_TYPE 错误。
力
如果指定,即使有依赖的浅克隆,也会丢弃 Unity 目录管理的表。
FORCE仅在工作区对浅克隆执行投放时间保护时才需要。 如果平面DROP TABLE在 中CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE失败,可以用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;