数据库管理命令语法

几乎所有的管理命令都有变体。最常见的变体包括命令中可选的部分,或者可以具有多个值的部分。某些变体使用特殊字符来指示。详情请参阅读取管理命令语法

本页总结了各种命令语法选项。在适用的情况下,还包括 Cypher 5 和 Cypher 25 的示例。

Cypher® 版本

自 Neo4j 2025.06 起,Cypher 语言与 Neo4j 服务器解耦,并遵循其自身的版本控制。目前有两种可用的 Cypher 版本:Cypher 5 和 Cypher 25。您可以通过以下方式指定 Cypher 版本:在 neo4j.conf 文件中明确设置 db.query.default_language 配置,为整个 DBMS 配置默认 Cypher 版本;在使用 CREATE DATABASEALTER DATABASE 时按每个数据库进行配置;或者在查询前添加 CYPHER 5CYPHER 25 以覆盖默认设置。有关更多信息,请参阅配置 Cypher 默认版本Cypher 手册 → 选择 Cypher 版本

Cypher 5

Cypher 5 是与为 Neo4j 2025.05 及更早版本编写的所有查询兼容的语言版本。然而,自 Neo4j 2025.06 起,它已被冻结,未来版本将仅获得性能增强和错误修复。
将默认语言设置为 CYPHER 5 可确保在该数据库上运行的所有查询都使用 Neo4j 2025.06 发布时存在的 Cypher 5 版本(除非您在查询前添加 CYPHER 25,这将覆盖此默认设置)。2025.06 发布之后引入的任何更改都不会影响查询的语义。
Cypher 5 仍然是所有新创建数据库的默认版本,除非在 DBMS 级别明确设置db.query.default_language=CYPHER_25,或者使用 CREATE DATABASEALTER DATABASE 进行了覆盖,或者通过在查询前添加 CYPHER 25 进行覆盖。

Cypher 25

Cypher 25 构建于 Cypher 5 之上,包含新的和改进的功能,以及一些移除项。Neo4j 2025.06 或更高版本中引入的任何新 Cypher 功能仅添加到 Cypher 25 中。将默认语言设置为 CYPHER 25 可确保在该数据库上运行的所有查询都使用该数据库当前运行的 Cypher 25 版本(除非您在查询前添加 CYPHER 5,这将覆盖此默认设置)。例如,具有默认语言 Cypher 25 的 Neo4j 2025.10 数据库将使用 Neo4j 2025.10 中存在的 Cypher 25,包括在 Neo4j 2025.06、2025.07、2025.08 和 2025.09 中引入的任何更改。

从 Neo4j 2026.02 开始,分发的 neo4j.conf 明确设置db.query.default_language=CYPHER_25。因此,使用所提供配置文件的部署,其新创建的数据库默认使用 Cypher 25。Cypher 版本仍然可以在 CREATE DATABASE 命令中明确指定,也可以随时使用 ALTER DATABASE 进行更改。

如果您想将 Cypher 5 作为新数据库的默认版本,可以删除或注释掉该配置条目,这等同于设置 db.query.default_language=CYPHER_5。现有数据库保留其现有的默认语言。

读取管理命令语法

表 1. 语法摘要中的特殊字符
字符 含义 示例

|

用于指示命令的替代部分(即 or)。需要作为分组的一部分。

如果语法需要指定名称或 *,可以使用 * | name 来指示。

{}

用于对命令的部分进行分组。通常与 | 一起出现。

为了在语法摘要中使用 or,它需要在一个组中:{* | name}

[]

用于指示命令的可选部分。它还将多个替代选项组合在一起,当可以是其中任一选项或均不选时使用。

如果语法中的关键字可以是单数或复数,可以使用 GRAPH[S] 来指示 S 是可选的。

...

重复模式。与此紧邻的前一个命令部分相关,表示该部分可重复。

以逗号分隔的名称列表应为 name[, ...]

"

当特殊字符本身作为语法的一部分时,用 " 将其括起来以示区分。

要在语法中包含 {,请使用 "{" { * | name } "}"。在这种情况下,您将得到 { * }{ name }

上表中的特殊字符是语法摘要中唯一需要使用 " 进行转义的字符。

下面是一个使用所有特殊字符的示例。它授予 READ 权限

GRANT READ
  "{" { * | property[, ...] } "}"
  ON {HOME GRAPH | GRAPH[S] { * | name[, ...] }}
    [ ELEMENT[S] { * | label-or-rel-type[, ...] }
    | NODE[S] { * | label[, ...] }
    | RELATIONSHIP[S] { * | rel-type[, ...] }]
  TO role[, ...]

请注意,此命令在语法中包含了 {},在它们之间可以是一组属性或字符 *。它还有多个可选部分,包括命令的实体部分,即图名称后面的分组。有关图权限命令语法的详细信息,请参阅图权限命令的组件

但是,在为节点属性创建约束时,不需要对任何字符进行转义。这是因为 () 不是特殊字符,而 [] 指示约束名称和 IF NOT EXISTS 部分是可选的,因此不属于命令本身。

CREATE CONSTRAINT [constraint_name] [IF NOT EXISTS]
FOR (n:LabelName)
REQUIRE n.propertyName IS NOT NULL

数据库管理命令语法

数据库管理命令用于管理标准数据库或复合数据库。

显示数据库

命令 语法

SHOW DATABASE

SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
[WHERE expression]
SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

创建数据库

命令 语法

CREATE DATABASE

CREATE DATABASE name [IF NOT EXISTS]
[DEFAULT LANGUAGE CYPHER {5|25}]
[TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
CREATE OR REPLACE DATABASE name
[DEFAULT LANGUAGE CYPHER {5|25}]
[TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

[DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。

命令 语法

CREATE DATABASE

CREATE DATABASE name [IF NOT EXISTS]
[[SET] DEFAULT LANGUAGE CYPHER {5|25}]
[[SET] TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
CREATE OR REPLACE DATABASE name
[[SET] DEFAULT LANGUAGE CYPHER {5|25}]
[[SET] TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

[[SET] DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。
在 Cypher 25 中,[TOPOLOGY n PRIMAR{Y\|IES} [m SECONDAR{Y\|IES}]][[SET] TOPOLOGY n PRIMAR{Y\|IES} [m SECONDAR{Y\|IES}]] 取代。

创建复合数据库

命令 语法

CREATE COMPOSITE DATABASE

CREATE COMPOSITE DATABASE name [IF NOT EXISTS]
[DEFAULT LANGUAGE CYPHER {5|25}]
[OPTIONS "{" "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
CREATE OR REPLACE COMPOSITE DATABASE name
[DEFAULT LANGUAGE CYPHER {5|25}]
[OPTIONS "{" "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

[DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。

命令 语法

CREATE COMPOSITE DATABASE

CREATE COMPOSITE DATABASE name [IF NOT EXISTS]
[[SET] DEFAULT LANGUAGE CYPHER {5|25}]
[OPTIONS "{" "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
CREATE OR REPLACE COMPOSITE DATABASE name
[[SET] DEFAULT LANGUAGE CYPHER {5|25}]
[OPTIONS "{" "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

[[SET] DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。

创建分片属性数据库

命令 语法

CREATE DATABASE

CREATE DATABASE name [IF NOT EXISTS]
[[SET] DEFAULT LANGUAGE CYPHER {5|25}]
[[SET] GRAPH SHARD {
  [TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
}]
[SET] PROPERTY SHARD[S] {
  COUNT n [TOPOLOGY m REPLICA[S]]
}
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

创建分片属性数据库时,会创建以下内容

  • 一个虚拟分片属性数据库 <name>

  • 一个名为 <name>-g000 的单一图分片。

  • 多个名为 <name>-p<index> 的属性分片,其中 <index> 的范围从 000999SET PROPERTY SHARDS 中的 count 属性指定了属性分片的数量。

分片属性数据库的 CREATE DATABASE 命令仅支持 seedURI 选项。详情请参阅创建分片属性数据库

CREATE OR REPLACE 不会替换现有的分片属性数据库。

修改数据库

命令 语法

ALTER DATABASE

ALTER DATABASE name [IF EXISTS]
{
SET ACCESS {READ ONLY | READ WRITE} |
SET TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}] |
SET OPTION option value |
SET DEFAULT LANGUAGE CYPHER {5|25}
}
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
ALTER DATABASE name [IF EXISTS]
REMOVE OPTION option
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

可以针对不同的选项键存在多个 SET OPTIONREMOVE OPTION 子句。

从 2025.06 开始,SET DEFAULT LANGUAGE CYPHER {5|25} 适用于自托管部署和 Aura。

修改复合数据库

命令 语法

ALTER DATABASE

ALTER DATABASE name [IF EXISTS]
SET DEFAULT LANGUAGE CYPHER {5|25}
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

修改分片属性数据库

命令 语法

ALTER DATABASE <name>

ALTER DATABASE name [IF EXISTS]
{
  SET ACCESS {READ ONLY | READ WRITE} |
  SET OPTION option value |
  SET DEFAULT LANGUAGE CYPHER {5|25} |
  SET GRAPH SHARD {
    SET TOPOLOGY ((n PRIMAR{Y|IES}) | (m SECONDAR{Y|IES}))+
  } |
  SET PROPERTY SHARD[S] {
    SET TOPOLOGY n REPLICA[S]
  }
}
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

ALTER DATABASE <graph-shard>

ALTER DATABASE name [IF EXISTS]
SET TOPOLOGY (
  (n PRIMAR{Y|IES}) |
  (m SECONDAR{Y|IES})
)
[WAIT [n [SEC[OND[S]]]] | NOWAIT]

ALTER DATABASE <property-shard>

ALTER DATABASE name [IF EXISTS]
SET TOPOLOGY (
  n REPLICA[S]
)
[WAIT [n [SEC[OND[S]]]] | NOWAIT]

停止数据库

命令 语法

STOP DATABASE

STOP DATABASE name [WAIT [n [SEC[OND[S]]]]|NOWAIT]

启动数据库

命令 语法

START DATABASE

START DATABASE name [WAIT [n [SEC[OND[S]]]]|NOWAIT]

删除数据库

命令 语法

DROP DATABASE

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

数据库别名管理命令语法

数据库别名管理命令用于管理本地或远程数据库别名。

显示别名

命令 语法

SHOW ALIAS

SHOW ALIAS[ES] [name] FOR DATABASE[S]
[WHERE expression]
SHOW ALIAS[ES] [name] FOR DATABASE[S]
YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

列出本地和远程数据库别名,并可选择按别名名称过滤。

创建本地别名

命令 语法

CREATE ALIAS

CREATE ALIAS name [IF NOT EXISTS] FOR DATABASE targetName
[PROPERTIES "{" key: value[, ...] "}"]
CREATE OR REPLACE ALIAS name FOR DATABASE targetName
[PROPERTIES "{" key: value[, ...] "}"]

创建远程别名

命令 语法

CREATE ALIAS

CREATE ALIAS name [IF NOT EXISTS] FOR DATABASE targetName
AT 'url' USER username PASSWORD 'password'
[DRIVER "{" setting: value[, ...] "}"]
[DEFAULT LANGUAGE CYPHER {5|25}]
[PROPERTIES "{" key: value[, ...] "}"]
CREATE OR REPLACE ALIAS name FOR DATABASE targetName
AT 'url' USER username PASSWORD 'password'
[DRIVER "{" setting: value[, ...] "}"]
[DEFAULT LANGUAGE CYPHER {5|25}]
[PROPERTIES "{" key: value[, ...] "}"]

[DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。

命令 语法

CREATE ALIAS

CREATE ALIAS name [IF NOT EXISTS] FOR DATABASE targetName
AT 'url' { USER username PASSWORD 'password' | OIDC CREDENTIAL FORWARDING }
[DRIVER "{" setting: value[, ...] "}"]
[DEFAULT LANGUAGE CYPHER {5|25}]
[PROPERTIES "{" key: value[, ...] "}"]
CREATE OR REPLACE ALIAS name FOR DATABASE targetName
AT 'url' { USER username PASSWORD 'password' | OIDC CREDENTIAL FORWARDING }
[DRIVER "{" setting: value[, ...] "}"]
[DEFAULT LANGUAGE CYPHER {5|25}]
[PROPERTIES "{" key: value[, ...] "}"]

[DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。
OIDC CREDENTIAL FORWARDING 从 Neo4j 2026.01 起可用。

修改本地别名

命令 语法

ALTER ALIAS

ALTER ALIAS name [IF EXISTS] SET DATABASE
[TARGET targetName]
[PROPERTIES "{" key: value[, ...] "}"]

修改远程别名

命令 语法

ALTER ALIAS

ALTER ALIAS name [IF EXISTS] SET DATABASE
[TARGET targetName AT 'url']
[USER username]
[PASSWORD 'password']
[DRIVER "{" setting: value[, ...] "}"]
[DEFAULT LANGUAGE CYPHER {5|25}]
[PROPERTIES "{" key: value[, ...] "}"]

[DEFAULT LANGUAGE CYPHER {5|25}] 从 Neo4j 2025.06 起可用。

删除别名

命令 语法

DROP ALIAS

DROP ALIAS name [IF EXISTS] FOR DATABASE

删除本地或远程数据库别名。

© . This site is unofficial and not affiliated with Neo4j, Inc.