Neo4j 数据库 Cypher 查询语言基础语法与常用操作教程

Neo4j 数据库阿木 发布于 2025-07-08 10 次阅读


Cypher 查询语言基础语法与常用操作教程

Neo4j 是一个高性能的图形数据库,它使用图结构来存储和查询数据。Cypher 是 Neo4j 的查询语言,它允许用户以声明式的方式查询图数据。本文将介绍 Cypher 查询语言的基础语法和常用操作,帮助读者快速上手 Neo4j 数据库的查询。

Cypher 简介

Cypher 是一种类似于 SQL 的查询语言,但它专门用于图数据库。Cypher 允许用户以节点和关系的形式查询图数据,并且支持多种查询模式,如路径查询、模式匹配、聚合等。

Cypher 基础语法

1. 查询结构

Cypher 查询的基本结构如下:

cypher

MATCH (n) RETURN n


这个查询会匹配所有节点并返回它们。

2. 关键字

Cypher 使用一些关键字来定义查询的不同部分,以下是一些常用的关键字:

- `MATCH`:用于指定查询模式。

- `RETURN`:用于指定返回的结果。

- `WHERE`:用于过滤结果。

- `CREATE`:用于创建节点或关系。

- `DELETE`:用于删除节点或关系。

- `MERGE`:用于合并节点或关系。

3. 节点和关系

在 Cypher 中,节点和关系是图数据的基本单位。节点用大写字母表示,关系用小写字母表示。

cypher

MATCH (p:Person) RETURN p


这个查询会匹配所有类型为 `Person` 的节点。

4. 属性

节点和关系可以具有属性,属性用冒号和属性名表示。

cypher

MATCH (p:Person {name: 'Alice'}) RETURN p


这个查询会匹配所有名为 `Alice` 的 `Person` 节点。

常用操作

1. 节点匹配

cypher

MATCH (p:Person) RETURN p


这个查询会返回所有 `Person` 节点。

2. 关系匹配

cypher

MATCH (p:Person)-[:FRIENDS_WITH]->(f) RETURN p, f


这个查询会返回所有 `Person` 节点及其 `FRIENDS_WITH` 关系指向的节点。

3. 路径查询

cypher

MATCH p=shortestPath((a:Person {name: 'Alice'})-[]-(b:Person {name: 'Bob'}))


RETURN p


这个查询会返回从 Alice 到 Bob 的最短路径。

4. 聚合

cypher

MATCH (p:Person) RETURN count(p) as totalPeople


这个查询会返回所有 `Person` 节点的数量。

5. 过滤

cypher

MATCH (p:Person {age: > 30}) RETURN p


这个查询会返回所有年龄大于 30 的 `Person` 节点。

6. 创建和删除

cypher

CREATE (p:Person {name: 'Charlie', age: 25})


DELETE (p:Person {name: 'Charlie'})


这些查询分别创建一个名为 `Charlie` 的 `Person` 节点,并删除它。

7. 合并

cypher

MERGE (p:Person {name: 'David'})


ON CREATE SET p.age = 30


ON MATCH SET p.age = 35


这个查询会合并一个名为 `David` 的 `Person` 节点,如果不存在则创建,并设置其年龄。

高级特性

1. 子查询

cypher

MATCH (p:Person) WHERE (p IN (SELECT name FROM (q:Person) WHERE q.age > 30)) RETURN p


这个查询使用子查询来过滤年龄大于 30 的 `Person` 节点。

2. 参数化查询

cypher

MATCH (p:Person {name: $name}) RETURN p


在这个查询中,`$name` 是一个参数,可以在执行查询时提供值。

3. 事务

cypher

BEGIN


CREATE (p:Person {name: 'Eve'})


COMMIT


这个查询使用事务来确保创建操作的一致性。

总结

Cypher 是 Neo4j 的强大查询语言,它提供了丰富的功能来查询和操作图数据。读者应该能够理解 Cypher 的基础语法和常用操作。要成为一名熟练的 Cypher 用户,还需要不断实践和学习。希望本文能帮助您在 Neo4j 数据库的查询之旅中迈出坚实的一步。