DROP DATABASE

从系统中移除数据库。

另请参阅:

CREATE DATABASEALTER DATABASEDESCRIBE DATABASESHOW DATABASESUNDROP DATABASE

语法

DROP DATABASE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
Copy

参数

name

指定要删除的数据库的标识符。如果标识符包含空格、特殊字符或大小写混合字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

CASCADE | RESTRICT

指定如果存在引用数据库中任何表的外键,是否可以删除数据库:

  • CASCADE 会删除数据库和数据库中的所有对象,包括具有由其他表中的外键引用的主键/唯一键的表。

  • RESTRICT 会返回有关现有外键引用的警告,并且不会删除数据库。

默认:CASCADE

使用说明

  • 删除数据库不会将其从系统中永久移除。Time Travel 中会保留已删除数据库的版本,而保留天数由该数据库的 DATA_RETENTION_TIME_IN_DAYS 参数指定:

    1. 在 Time Travel 保留期内,可以使用 UNDROP DATABASE 命令还原已删除的数据库。

    2. 当 Time Travel 保留期结束时,已删除数据库的下一个状态取决于它是永久的还是瞬态的:

      • 永久数据库将进入 故障安全 状态。在故障安全状态下(为期 7 天),可以恢复已删除的数据库,但只能由 Snowflake 恢复。当数据库退出故障安全状态后,它将被清除。

      • 瞬态数据库没有故障安全状态,因此当它移出 Time Travel 后会被清除。

    3. 已删除的数据库一经清除便无法恢复,只能重新创建。

  • 目前,删除数据库时,如果将子架构或表的数据保留期显式设置为不同于数据库的保留期,则不遵守该保留期。子架构或表的保留时间与数据库相同。要遵守这些子对象(架构或表)的数据保留期,请在删除数据库或架构 之前 显式删除它们。

  • 删除数据库后,创建同名数据库将会创建该数据库的新版本。仍然可以使用以下方法还原先前数据库的已删除版本:

    1. 将数据库的当前版本重命名为其他名称。

    2. 使用 UNDROP DATABASE 命令还原先前的版本。

  • 如果有策略或标签附加到表或视图列,则要成功删除数据库,必须让策略或标签自包含在数据库和架构中。例如,database_1 包含 policy_1policy_1 仅在 database_1 中使用。否则,将出现 悬空引用

  • 如果在用户或账户上设置了会话策略或密码策略,则 DROP 操作将失败。

Database Replication 使用说明

  • 您可以随时删除辅助数据库。只有数据库所有者(即对数据库具有 OWNERSHIP 权限的角色)才能删除数据库。

  • 如果存在主数据库的一个或多个副本(即辅助数据库),则无法删除该数据库。若要删除主数据库,请先将辅助数据库提升为主数据库,然后删除以前的主数据库。或者,删除主数据库的所有辅助数据库,然后删除主数据库。

    请注意,只有数据库所有者才能删除数据库。

示例

DROP DATABASE mytestdb2;

+---------------------------------+
| status                          |
|---------------------------------|
| MYTESTDB2 successfully dropped. |
+---------------------------------+

SHOW DATABASES LIKE 'mytestdb2';

+------------+------+------------+------------+--------+-------+---------+---------+----------------+
| created_on | name | is_default | is_current | origin | owner | comment | options | retention_time |
|------------+------+------------+------------+--------+-------+---------+---------+----------------|
+------------+------+------------+------------+--------+-------+---------+---------+----------------+

SHOW DATABASES HISTORY LIKE 'mytestdb2';

+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+
| created_on                      | name      | is_default | is_current | origin | owner  | comment | options | retention_time | dropped_on                      |
|---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------|
| Wed, 25 Feb 2015 16:16:54 -0800 | MYTESTDB2 | N          | N          |        | PUBLIC |         |         |              1 | Fri, 13 May 2016 17:35:09 -0700 |
+---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+
Copy
语言: 中文