删除数据库

可以使用 DROP DATABASE 命令删除数据库。请注意,在删除数据库之前,必须先删除所有的数据库别名。

语法

命令 语法

DROP DATABASE

DROP [COMPOSITE] DATABASE name [IF EXISTS] [RESTRICT | CASCADE ALIAS[ES]] [{DUMP|DESTROY} [DATA]] [WAIT [n [SEC[OND[S]]]]|NOWAIT]

示例

删除数据库

若要删除名为 customers 的数据库,请运行以下命令

DROP DATABASE customers

标准数据库和组合数据库均可使用此命令删除。

DROP DATABASE 命令会彻底移除数据库。因此,它将不再显示在 SHOW DATABASES 命令提供的列表中。

SHOW DATABASES YIELD name
结果
+---------------------+
| name                |
+---------------------+
| "movies"            |
| "neo4j"             |
| "system"            |
+---------------------+

使用 IF EXISTS 删除数据库

DROP DATABASE 命令具有可选的幂等性,默认行为是如果数据库不存在,则会报错并失败。

在命令中附加 IF EXISTS 可确保如果数据库不存在,不会返回错误,且不执行任何操作。

如果存在指向该数据库的现有别名,它总是会返回错误。在这种情况下,必须先删除该别名,才能删除数据库。

DROP DATABASE customers IF EXISTS

使用 DUMP DATADESTROY DATA 删除数据库

通过在 DROP DATABASE 命令后附加 DUMP DATA,您可以在删除数据库之前创建存储文件的转储文件。

DROP DATABASE movies DUMP DATA

在 Neo4j 中,转储文件可以存储在由 server.directories.dumps.root 设置指定的目录中(默认情况下,转储存储路径为 <neo4j-home>/data/dumps)。您可以使用转储文件通过 从 URI 种子创建 的方式来创建数据库。

选项 DESTROY DATA 明确表示使用该命令的默认行为。

DUMP DATA 产生的转储文件与 neo4j-admin database dump 产生的转储文件等效。您也可以使用 neo4j-admin database load 命令来恢复它们。

使用 IF EXISTSDUMP DATA/DESTROY DATA 删除数据库

选项 IF EXISTSDUMP DATA/DESTROY DATA 也可以组合使用。

示例如下

DROP DATABASE customers IF EXISTS DUMP DATA

删除存在本地数据库别名指向的数据库

删除作为本地数据库别名目标的数据库有两种方法

  • 首先删除本地数据库别名,然后使用 DROP DATABASE name 删除数据库。指向该数据库的远程数据库别名不会影响数据库的删除,因此不需要提前删除。

  • 使用 DROP DATABASE name CASCADE ALIASES,在删除数据库的同时删除指向它的本地数据库别名。如果被删除的任何数据库别名是组合数据库的组成部分,这些组合数据库不会被删除。此命令不影响指向被删除数据库的远程数据库别名。它们将简单地无法解析其目标,就像它们是被创建为指向一个不存在的数据库一样。

使用 CASCADE ALIASES 需要 DROP ALIAS 权限。有关此权限的更多信息,请参阅 别名管理权限

示例 1. 删除数据库及其指向的本地数据库别名

以下示例创建了一个名为 movies 的数据库和一个指向它的本地数据库别名 films

CREATE DATABASE movies
CREATE ALIAS films FOR DATABASE movies

然后,可以使用以下命令删除 movies 数据库和 films 本地数据库别名

DROP DATABASE movies CASCADE ALIASES

选项 RESTRICT 明确表示使用该命令的默认行为。

对于标准数据库,使用 CASCADE ALIASES 选项删除的别名可以在 SHOW DATABASEaliases 列中找到。

使用 RESTRICT/CASCADE ALIASES 及其他命令部分删除数据库

选项 RESTRICT/CASCADE ALIASES 也可以与 IF EXISTSDUMP DATA/DESTROY DATA 组合使用。例如

DROP DATABASE movies IF EXISTS CASCADE ALIASES DUMP DATA