neo4j 的cql 语句,增、删、改、查(条件查询)(持续更新)

前言

因为做一个比赛的项目 ,需要用到 neo4j 数据库,所以要学习其语言cql,特来整理一下他的基本语言。
整片的语句是按照 了 Neo4j 数据库自带的示例 Movie Graph 来写的。
直接看这个博客也是没有问题的。都是很基础的语句。

neo4j图数据库中基本基础元素与概念

1 元素基本

节点(Node)
表示一个实体记录、就像关系数据库当中一条记录。一个节点包含多个属性和标签。
关系(Relationship)
关系用于将及诶单关联起来构成图,关系也称为图论的边(Edge)。
属性(Property)
节点和关系都可以有多个属性,属性是由键值对组成的,就像java当中哈希
标签(Label)
标签指示一组拥有相同属性的节点,但不强制要求相同,一个节点可以有多个标签。
路径(path)
图中任意两个节点都存在由关系组成的路径,路径有长短之分。

2 逻辑

  1. mysql :
    数据库实例= =》数据库(database)= =》表(table)= =》列==》记录
  2. Neo4j:
    neo4j实例= =》数据库(graph)= =》节点= =》关系= =》属性==》标签(Label)

一、查询语句

1、根据节点属性值 返回 具体单个节点

MATCH  (n: User{name:  "56" }) 
return  n;

参数解释:
match :查询关键字
n : 定义的变量,将要返回的值 赋值于他。
User :节点对象。== 一个对象包含很多节点。==
name : “56” 节点属性 :节点属性的值

2、根据对象返回对象中的所有属性

MATCH (n:Person) 
RETURN n.name 
LIMIT 10

参数解释
n : Person : Person类 赋值于 n,
n.name : 取出Person类中的name属性值。
LIMIT : 限制,设置输出到界面上的记录条数。

3、根据属性的条件区间 返回 所在区间的对象属性

MATCH (n: Movie) 
WHERE n.released >= 1990 AND n.released < 2000 
RETURN n.title

参数解释:
WHERE : 条件设置关键字。
AND : 连接两个条件的关键字
解释:查询 电影中 属性released在1990-2000的title属性值。

4、查询 节点对象 、其关系 以及 关系的节点

MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) 
RETURN tom,tomHanksMovies

参数解释:
[] :表示为关系。
:ACTED_IN : 这是例子,为主演。
tomHanksMovies : 这是例子,为演过的电影。
翻译:名字为Tom Hanks 主演过的 电影,并返回 Tom Hanks节点和联系 以及子节点(演过的电影)

二、创建语句

1、创建一个节点

CREATE  (k : Person{ name:'鲁班',born:1997}) RETURN k

参数解释:
CREATE : 创建 节点的关键字。
翻译:创建一个Person类的 节点标签(名为鲁班)。并且设置其属性。并返回这个节点(返回之后就可以看到)
查看其节点
查询这个刚创建的节点

MATCH  (k : Person{ name:'鲁班',born:1997}) RETURN k

查询这个鲁班节点与别人之间的关系

MATCH  (k : Person{ name:'鲁班',born:1997}) -[]-() RETURN k

然尔 并没有任何关系

2、一次创建多个节点

CREATE (:pig{name:"猪爷爷",age:6}),
(:pig{name:"猪奶奶",age:4}),
(:pig{name:"猪爸爸",age:3}),
(:pig{name:"猪妈妈",age:1})

参数解释:
可以去掉冒号右边的变量。多个节点之间用逗号隔开

2、基于现有节点 创建一个关系

MATCH (gf:pig{name:"猪爷爷"}) 
MATCH (gm:pig{name:"猪奶奶"})
CREATE (gf)-[r:夫妻]->(gm) 
RETURN gf,r,gm

参数解释:
这里没有逗号连接,先查询出来,放到变量里面,在进行创建连接
(变量名)-[变量名:联系名{这里是联系的属性}]->(变量名)

3、创建 节点 + 关系

CREATE (:pig{name:"猪爸爸",age:12})-[:夫妻]->(:pig{name:"猪妈妈",age:9})

解释:
直接创建 节点 关系 节点。

三、修改语句

1、修改属性

MATCH (a:pig{name:"猪爸爸",age:12}) 
SET a.age=5 
return a

参数解释:
SET :修改关键字。
变量.对象属性 = 更变的值。

四、删除语句 先删关系在删节点。

MATCH (n:pig{name:"佩奇"})-[r]-() 
WHERE n.age=0.6
DELETE r,n

参数解释:
[] : 任意节点
() : 任意节点
r : 对应关系

### Neo4j Cypher 查询语言简介 Cypher 是一种由 Neo4j 提出的图查询语言,旨在提供简洁且直观的方式来操作图形数据库。作为一种声明式语言,Cypher 的设计灵感来源于 SQL,但专为处理复杂网络结构的数据而优化[^1]。 #### 基本概念对比 为了更好地理解 Cypher 和传统关系型数据库的区别,这里给出两者之间的一些基本概念对应: | **Cypher (Neo4j)** | **SQL** | |--|---------| | 节点 | 行 | | 属性 | 列 | | 标签 | 表名 | | 关系 | 外键 | 这种映射有助于初学者快速上手,尽管实际上二者存在显著差异——尤其是关于灵活性和支持的功能方面[^3]。 #### 安装与环境配置 在开始编写 Cypher 查询之前,需确保安装了兼容当前 Java 开发工具包(JDK)版本的 Neo4j 实例。具体来说: - 对于 JDK 8,应选用 v4 版本之前的 Neo4j; - 使用 JDK 11,则推荐采用 4.x 系列版本; - 若运行的是 JDK 17,那么至少要选择 5.x 或更高版本。 #### 创建简单的 Repository 接口 当利用 Spring Data Neo4j 进行开发时,可以通过定义一个继承自 `Neo4jRepository` 的接口来简化 CRUD 操作。下面是一个例子,展示了如何针对名为 `FriendOf` 的实体类建立相应的仓库接口[^2]: ```java package org.example.repository; import org.example.entity.FriendOf; import org.springframework.data.neo4j.repository.Neo4jRepository; public interface PersonRelationRepository extends Neo4jRepository<FriendOf, Long> { } ``` 此代码片段定义了一个泛型参数分别为 `FriendOf` 类及其主键类型的仓储接口,从而实现了对该类型对象的基本持久化支持。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java冯坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值