Appearance
Cypher 简介
Cypher 语法特点
Cypher 是 Neo4j 的查询语言,设计灵感来自 SQL,但专为图数据库优化。
主要特点:
- 声明式语法:描述要查询的模式,而不是如何执行查询
- 直观的模式匹配:使用 ASCII 艺术风格的语法表示图结构
- 表达能力强:支持复杂的图模式查询
- 可读性高:语法简洁明了,易于理解
- 功能丰富:支持创建、读取、更新、删除操作
基本语法结构
1. 模式语法
- 节点:使用括号表示,如
(n) - 关系:使用箭头表示,如
(a)-[r]->(b) - 标签:使用冒号表示,如
(n:Person) - 属性:使用大括号表示,如
(n:Person {name: 'John'})
2. 子句结构
Cypher 查询通常由多个子句组成:
- MATCH:指定要匹配的图模式
- WHERE:添加过滤条件
- RETURN:指定要返回的结果
- CREATE:创建节点和关系
- UPDATE:更新节点和关系的属性
- DELETE:删除节点和关系
- SET:设置属性值
- REMOVE:移除属性或标签
3. 数据类型
Cypher 支持多种数据类型:
- 字符串:
'Hello' - 数字:
42,3.14 - 布尔值:
true,false - 数组:
[1, 2, 3] - 映射:
{name: 'John', age: 30} - 日期/时间:
date(),datetime()
常用关键字
1. 查询关键字
- MATCH:匹配图模式
- WHERE:过滤条件
- RETURN:返回结果
- WITH:传递中间结果
- ORDER BY:排序结果
- LIMIT:限制结果数量
- SKIP:跳过结果数量
- DISTINCT:去重结果
2. 修改关键字
- CREATE:创建节点和关系
- MERGE:创建或匹配节点和关系
- SET:设置属性
- REMOVE:移除属性或标签
- DELETE:删除节点和关系
3. 其他关键字
- AS:别名
- IN:检查值是否在集合中
- IS NULL:检查值是否为 null
- AND/OR/NOT:逻辑运算符
- =, <, >, <=, >=:比较运算符
示例查询
1. 基本查询
cypher
// 匹配所有 Person 节点
MATCH (p:Person)
RETURN p
// 匹配指定名称的 Person 节点
MATCH (p:Person {name: 'John'})
RETURN p
// 匹配具有朋友关系的节点
MATCH (a:Person)-[:FRIENDS_WITH]->(b:Person)
RETURN a, b2. 创建操作
cypher
// 创建一个 Person 节点
CREATE (p:Person {name: 'John', age: 30})
// 创建两个节点和它们之间的关系
CREATE (a:Person {name: 'John'})-[r:FRIENDS_WITH {since: 2010}]->(b:Person {name: 'Alice'})3. 更新操作
cypher
// 更新节点属性
MATCH (p:Person {name: 'John'})
SET p.age = 31
RETURN p
// 添加标签
MATCH (p:Person {name: 'John'})
SET p:Employee
RETURN p4. 删除操作
cypher
// 删除节点
MATCH (p:Person {name: 'John'})
DELETE p
// 删除关系
MATCH (a:Person)-[r:FRIENDS_WITH]->(b:Person)
DELETE r小结
Cypher 是一种强大而直观的查询语言,专为图数据库设计。通过本文的介绍,您应该对 Cypher 的基本语法和特点有了初步了解。在接下来的章节中,我们将详细介绍如何使用 Cypher 进行节点操作、关系操作和属性操作。