Neo4j 数据库 基本查询完整语法

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


摘要:

Neo4j 是一个高性能的图形数据库,它使用图结构来存储和查询数据。本文将围绕Neo4j的基本查询语法进行详细讲解,包括Cypher 查询语言的基本结构、常用查询操作、以及一些高级查询技巧。

一、

Neo4j 是一个基于图结构的数据库,它使用Cypher查询语言来执行查询。Cypher是一种声明式查询语言,类似于SQL,但它专门用于图数据。本文将详细介绍Neo4j的基本查询语法,帮助读者快速掌握Cypher查询语言。

二、Cypher查询语言基础

1. Cypher查询结构

Cypher查询通常由以下部分组成:

- MATCH:指定要查询的图模式。

- WHERE:指定查询条件。

- RETURN:指定查询结果要返回的内容。

2. MATCH语句

MATCH语句用于指定查询的图模式,它类似于SQL中的FROM子句。以下是一些基本的MATCH语句示例:

cypher

MATCH (n) RETURN n


这个查询会返回数据库中所有的节点。

cypher

MATCH (p:Person) RETURN p


这个查询会返回所有标记为“Person”的节点。

cypher

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


这个查询会返回所有标记为“Person”的节点以及它们的朋友。

3. WHERE语句

WHERE语句用于指定查询条件,类似于SQL中的WHERE子句。以下是一些WHERE语句的示例:

cypher

MATCH (p:Person) WHERE p.age > 30 RETURN p


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

cypher

MATCH (p:Person)-[:FRIENDS_WITH]->(f) WHERE f.age < 30 RETURN p, f


这个查询会返回所有年龄大于30的“Person”节点以及他们的朋友,但朋友年龄必须小于30。

4. RETURN语句

RETURN语句用于指定查询结果要返回的内容。以下是一些RETURN语句的示例:

cypher

MATCH (p:Person) RETURN p.name, p.age


这个查询会返回所有“Person”节点的名字和年龄。

cypher

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


这个查询会返回所有“Person”节点及其朋友的名字。

三、常用查询操作

1. 节点和关系的创建与删除

cypher

CREATE (p:Person {name: 'Alice', age: 30})


创建一个名为Alice的“Person”节点。

cypher

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


删除名为Alice的“Person”节点。

cypher

CREATE (p:Person {name: 'Bob'})-[:FRIENDS_WITH]->(a:Person {name: 'Alice'})


创建一个名为Bob的“Person”节点,并将其与Alice节点建立“FRIENDS_WITH”关系。

cypher

MATCH (p:Person {name: 'Bob'})-[:FRIENDS_WITH]->(a:Person {name: 'Alice'}) DELETE p, a


删除Bob和Alice节点以及他们之间的“FRIENDS_WITH”关系。

2. 节点和关系的更新

cypher

MATCH (p:Person {name: 'Alice'}) SET p.age = 31


将Alice的年龄更新为31。

3. 节点和关系的遍历

cypher

MATCH p=(:Person {name: 'Alice'})-[:FRIENDS_WITH]->(f)


RETURN p, f


遍历Alice的所有朋友,并返回遍历路径和朋友的节点。

四、高级查询技巧

1. 节点和关系的过滤

cypher

MATCH (p:Person)-[:FRIENDS_WITH]->(f) WHERE f.age > 25 RETURN p, f


返回所有年龄大于25的“Person”节点及其朋友。

2. 节点和关系的排序

cypher

MATCH (p:Person)-[:FRIENDS_WITH]->(f) RETURN p.name, f.name ORDER BY p.age DESC


返回所有“Person”节点及其朋友的名字,并按年龄降序排序。

3. 节点和关系的聚合

cypher

MATCH (p:Person) RETURN p.name, count() AS friends_count


返回所有“Person”节点的名字以及他们朋友的数量。

五、总结

本文详细介绍了Neo4j的基本查询语法,包括MATCH、WHERE和RETURN语句,以及一些常用查询操作和高级查询技巧。通过学习这些内容,读者可以快速掌握Cypher查询语言,并能够有效地在Neo4j数据库中查询和操作图数据。

(注:本文仅为概述,实际应用中可能需要根据具体情况进行调整和优化。)