命名规则与建议
本页介绍了节点标签、关系类型、属性名称、变量、索引和约束的命名规则与建议。
命名规则
-
字母字符
-
名称应以字母字符开头。
-
这包括“非英文字符”,例如
å、ä、ö、ü等。
-
-
数字
-
名称不应以数字开头。
-
例如,
1first是不允许的,而first1是允许的。
-
-
符号
-
除下划线外,名称不应包含其他符号(如
my_variable)。如果名称以$开头,则表示一个参数,例如$myParam。
-
-
长度
-
名称可以很长,根据 Neo4j 版本的不同,最长可达
65535(2^16 - 1) 或65534个字符。
-
-
区分大小写
-
名称区分大小写,因此
:PERSON、:Person和:person是三个不同的标签,n和N是两个不同的变量。
-
-
空白字符
-
前导和尾随的空白字符会被自动移除。例如,
MATCH ( a ) RETURN a等同于MATCH (a) RETURN a。
-
在名称中使用特殊字符
名称中可以使用非字母字符(包括数字、符号和空白字符),但必须使用反引号(backticks)引起来。例如:`^n`、`1first`、`$$n` 和 `my variable has spaces`。数据库名称是一个例外,可以包含点号而无需使用反引号,尽管这种行为已被弃用,因为在处理复合数据库时可能会引入歧义。例如:将数据库命名为 foo.bar.baz 是合法的,但已被弃用。使用 `foo.bar.baz` 是合法的。
在用反引号引起来的名称中,允许使用以下字符表示形式
| 字符表示 | 描述 |
|---|---|
|
反引号 |
|
Unicode UTF-16 码点( |
|
在未清理的用户输入中使用反引号引用的名称会使您面临 Cypher® 注入的风险。减轻此风险的一些方法包括:
|
作用域和命名空间规则
-
节点标签、关系类型和属性名称可以重复使用相同的名称。
-
以下查询(标签、类型和属性名称均使用
a)是合法的:CREATE (a:a {a: 'a'})-[r:a]->(b:a {a: 'a'})。
-
-
节点和关系的变量在同一查询作用域内不得重复使用名称。
-
以下查询是不合法的,因为节点和关系都使用了名称
a:CREATE (a)-[a]->(b)。
-