DROP DATABASE¶
从系统中移除数据库。
语法¶
DROP DATABASE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
参数¶
name
指定要删除的数据库的标识符。如果标识符包含空格、特殊字符或大小写混合字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
CASCADE | RESTRICT
指定如果存在引用数据库中任何表的外键,是否可以删除数据库:
CASCADE
会删除数据库和数据库中的所有对象,包括具有由其他表中的外键引用的主键/唯一键的表。RESTRICT
会返回有关现有外键引用的警告,并且不会删除数据库。
默认:
CASCADE
使用说明¶
删除数据库不会将其从系统中永久移除。Time Travel 中会保留已删除数据库的版本,而保留天数由该数据库的
DATA_RETENTION_TIME_IN_DAYS
参数指定:在 Time Travel 保留期内,可以使用 UNDROP DATABASE 命令还原已删除的数据库。
当 Time Travel 保留期结束时,已删除数据库的下一个状态取决于它是永久的还是瞬态的:
永久数据库将进入 故障安全 状态。在故障安全状态下(为期 7 天),可以恢复已删除的数据库,但只能由 Snowflake 恢复。当数据库退出故障安全状态后,它将被清除。
瞬态数据库没有故障安全状态,因此当它移出 Time Travel 后会被清除。
已删除的数据库一经清除便无法恢复,只能重新创建。
目前,删除数据库时,如果将子架构或表的数据保留期显式设置为不同于数据库的保留期,则不遵守该保留期。子架构或表的保留时间与数据库相同。要遵守这些子对象(架构或表)的数据保留期,请在删除数据库或架构 之前 显式删除它们。
删除数据库后,创建同名数据库将会创建该数据库的新版本。仍然可以使用以下方法还原先前数据库的已删除版本:
将数据库的当前版本重命名为其他名称。
使用 UNDROP DATABASE 命令还原先前的版本。
如果有策略或标签附加到表或视图列,则要成功删除数据库,必须让策略或标签自包含在数据库和架构中。例如,
database_1
包含policy_1
,policy_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 | +---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+