删除数据库

可以使用命令 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删除数据库

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

DROP DATABASE movies DUMP DATA

这些转储等效于由neo4j-admin database dump生成的转储,并且可以使用neo4j-admin database load命令以类似的方式恢复。

在 Neo4j 中,转储可以存储在由server.directories.dumps.root设置指定的目录中(默认情况下,存储转储的路径为<neo4j-home>/data/dumps)。

选项DESTROY DATA明确请求命令的默认行为。

使用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