zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Neo4j之Cypher:Cypher查询语言的简介、语法、使用案例之详细攻略

案例 详细 简介 语法 攻略 Neo4j 使用 查询语言
2023-09-14 09:14:04 时间

Neo4j之Cypher:Cypher查询语言的简介、语法、使用案例之详细攻略

目录

Cypher查询语言的简介

Cypher查询语言的语法

1、基础语法

增加

删除

Cypher查询语言的使用案例

1、基础案例


Cypher查询语言的简介

       cypher是数据库用语,不用编写复杂的查询代码即可实现对图数据库的操作。Cypher是一种声明性的图查询语言,允许对图进行高效的查询、更新和管理。它的设计适合开发人员和操作专业人员。Cypher的设计简单,但功能强大;高度复杂的数据库查询可以很容易地表示,使您能够专注于您的领域,而不是迷失在数据库访问中。
       Cypher受到许多不同方法的启发,并建立在已建立的表达查询实践的基础上。许多关键字,如WHERE和ORDER BY,都受到SQL的启发。模式匹配借用SPARQL的表达式方法。一些列表语义是从Haskell和Python等语言中借来的。Cypher的结构基于英文散文和简洁的图标,使查询变得容易,无论是写还是读。
       Cypher 查询针对 Neo4j 数据库执行,但通常适用于特定图形。重要的是要理解这些术语的含义,以及究竟什么时候图形不是数据库。

官方文档Introduction - Cypher Manual

Cypher查询语言的语法

1、基础语法

neo4j内要使用操作图数据库的语言,即Cypher查询语言,如下所示

查询数据库中的所有节点,即查询数据库里的数据
# match是匹配规则,(n)表示所有节点,语法要求加上小括号

match(n) return n

增加

创建一个节点
# p1是变量名,Person是节点名,{}内包含了节点的两个属性

CREATE (p1:Person { name: "Tom", age: 20}) 

为节点增加属性

create(p1:Person{name:"Tom"})
match(p1) set p1.age = 20

创建两个节点并建立关系
# 创建了两个节点,并且Tom知道Bob,但Bob不知道Tom 

create
(p1:Person{name:"Tom", age:20}),
(p2:Person{name:"Bob", age:22}),
(p1)-[:KNOWS]->(p2)

删除

删除单节点并再次查询

match(p1:Person) detach delete p1
match(n) return n


match (a:Person {city:'shanghai'}) delete a 
# 删除标签类型为Person,city属性为shanghai的节点

删除所有内容

match (n) detach delete n


 

修改节点属性

match(p1) set p1.age = 33

查询所有对外有关系的节点
match (a)-->() return a

查询所有有关系的节点
match (a)--() return a

查询所有对外有关系的节点,以及关系类型
match (a)-[r]->() return a.name, type(r)

查询所有具有某种关系的节点
match (n)-[:relation]-() return n
match (n)-[:married]-() return n  //表示的是查询所有有结婚关系的节点

查询这两个节点及关系

 创建两个节点并建立关系
# 创建了两个节点,并且Tom知道Bob,但Bob不知道Tom 
create
(p1:Person{name:"Tom", age:20}),
(p2:Person{name:"Bob", age:22}),
(p1)-[:KNOWS]->(p2)

MATCH (p1: Person)-[KNOWS]-(p2: Person) return p1,KNOWS,p2

Cypher查询语言的使用案例

1、基础案例

CREATE (john:Person {name: 'John'})
CREATE (joe:Person {name: 'Joe'})
CREATE (steve:Person {name: 'Steve'})
CREATE (sara:Person {name: 'Sara'})
CREATE (maria:Person {name: 'Maria'})
CREATE (john)-[:FRIEND]->(joe)-[:FRIEND]->(steve)
CREATE (john)-[:FRIEND]->(sara)-[:FRIEND]->(maria)