DROP DATABASE 语句 会删除 CockroachDB cluster中的一个数据库和数据库里面的所有对象。

所需权限

用户必须拥有要删除数据库和数据库中所有表的 DROP 权限

概要

图片

参数

Parameter Description
IF EXISTS 如果要删除的数据库存在,则删除这个数据库;如果没,也不会返回错误
name 要删除的数据库的名字
CASCADE (Default) 删除数据库中的所有表与视图,同时也会删除所有依赖表的对象(例如 constraints and views)。

CASCADE 不会列出删除的对象,请谨慎使用
RESTRICT 如果一个数据库中包含 tables or views,那么删除数据库会失败。

例子

删除数据库与数据库中的对象 (CASCADE)

对于被互动的会话(e.g., 客户端连接),DROP DATABASE默认使用 CASCADE ,会删除数据库中的所有表与视图,同时也会删除所有依赖表的对象 (例如 constraintsviews)。

> SHOW TABLES FROM db2;
+-------+
| Table |
+-------+
| t1    |
| v1    |
+-------+
(2 rows)
> DROP DATABASE db2;
> SHOW TABLES FROM db2;
pq: database "db2" does not exist

对于来自内置SQL客户端的交互式会话, 必须显示设置CASCADE 选项,或者在启动shell时必须设置 --unsafe-updates 标志。

禁止删除一个非空的数据库(RESTRICT)

当一个数据库不是空的时候,RESTRICT会阻止数据库的删除。

> SHOW TABLES FROM db2;
+-------+
| Table |
+-------+
| t1    |
| v1    |
+-------+
(2 rows)
> DROP DATABASE db2 RESTRICT;
pq: database "db2" is not empty and CASCADE was not specified

See Also