Cypher是Neo4j的声明式查询语言,Neo4j是世界上领先的图数据库。Cypher的设计原则和能力主要体现在以下几个方面:
1. RETURN语句:RETURN语句用于返回查询结果。例如,RETURN *将返回所有变量的值,而RETURN n AS columnName则使用别名返回结果列的名称。此外,RETURN DISTINCT n将返回唯一行,ORDER BY n.property则用于对结果进行排序。Cypher查询语言可以创建、更新和删除节点、关系、标签和属性。Cypher还提供了标识符的概念,这些标识符表示命名、绑定的元素和参数。
2. MATCH模式匹配:MATCH语句用于在图中匹配节点和关系的模式,以便提取信息或修改数据。例如,MATCH(n:Person)-[:KNOWS]->(m:Person) WHERE n.name='Alice'将匹配所有与名为Alice的Person节点通过KNOWS关系相连的Person节点。MATCH(n)-->(m)可以使用任何模式,MATCH(n{name:'Alice'})-->(m)表示匹配具有特定属性的节点,MATCH p=(n)-->(m)则是将路径赋值给p。
3. OPTIONAL MATCH:OPTIONAL MATCH语句用于可选模式匹配,其中`null`将用于缺失的部分。例如,OPTIONAL MATCH(n)-[r]->(m) WHERE m.name='Alice'表示对于每个n,如果存在与m的匹配关系,则返回结果,否则返回`null`。
4. WHERE子句:WHERE子句用于过滤结果集。WHERE是MATCH、OPTIONAL MATCH、WITH或START子句的一部分,将其放在查询的其他子句后面将改变其功能。例如,WHERE n.property <> $value表示使用条件过滤属性不等于特定值的节点。
5. 索引和约束管理:Cypher管理索引和约束。Neo4j控制台允许你尝试Cypher代码片段,并提供完整的Cypher文档供你参考。对于使用Cypher的实时图形模型,你可以查看Graph Gist。Cypher参考卡也可以在PDF格式中获取。
Neo4j的属性可以是字符串、数字、布尔值或它们的数组。Cypher还支持映射和列表。语法结构包括只读查询结构、读写查询结构以及只写查询结构。例如:
- 只读查询结构:[MATCH WHERE] [OPTIONAL MATCH WHERE] [WITH [ORDER BY] [SKIP] [LIMIT]] RETURN [ORDER BY] [SKIP] [LIMIT]
- 读写查询结构:[MATCH WHERE] [OPTIONAL MATCH WHERE] [WITH [ORDER BY] [SKIP] [LIMIT]] RETURN [ORDER BY] [SKIP] [LIMIT]
- 只写查询结构:(CREATE [UNIQUE] | MERGE) * [SET | DELETE | REMOVE | FOREACH] [RETURN [ORDER BY] [SKIP] [LIMIT]]
在Cypher中,$符号表示字面量或参数。在应用程序中,使用参数是最推荐的做法。Neo4j的属性可以是字符串、数字、布尔值或它们的数组。Cypher还支持映射和列表。所有这些语法和结构构成了Cypher强大的查询能力,允许用户高效地处理图数据库中的数据。