neo4j数据库CQL语法详细介绍~

学习参考文档

neo4j官方文档:官方文档
neo4j与spring-data整合:整合
neo4j4.x版本安装包:提取码tshc
neo4j3.x版本安装包:提取码uz14
neo4j-demo项目地址:neo4j整合spring-data做curd

下载

注意:3.x版本需要jdk1.8或以上,4.x版本运行环境需要jdk11或以上。另外,4.x版本neo4j在访问时,增加了一项数据库名限制,3.x默认没有数据库名。
下载完安装包,解压到对应目录即可。
第一次安装需要配置服务,在bin目录下以管理员身份打开cmd,命令为:install-service
启动服务命令为:neo4j.bat console
浏览器访问地址:localhost:7474
默认用户名和密码:neo4j neo4j,第一次登录强制修改密码。

3.x版本与4.x版本区别

3.X版本截图:
在这里插入图片描述

4.x版本截图:
在这里插入图片描述

yml配置截图

在这里插入图片描述

CQL语句

注意:因为没有像mybatis一样对应的mapper文件给我们去写CQL,所以我们会在repository里面使用@Query注解去自定义拼接我们的CQL,类似JPA的注解。
tips:因为CQL的操作性很高,很多关键字可以组合在一起使用来达到意想不到的效果,类似于忍者神龟里面的组合技,可以多多尝试,可以发现意外的收获哦!

create命令(增)

创建没有属性的节点:
create (a:A)
a是节点,A是节点标签(java中的实体类)

创建有属性的节点:
create ( a : A { p1:v1 , p2:v2 … pn:vn }) return a
a是节点,A是节点标签(java中的实体类)p是属性名,v是属性值(java中实体类的字段)

match命令(查)

无条件查询所有节点:
match ( a:A ) return a

有条件查询节点:
match (a:A{p1:v1,p2:v2 … pn:vn}) return a 等同于
match (a:A) where a.p1 = v1 and a.p2 = v2 and … and a.pn = vn return a

模糊查询:
match (a:A) where a.p =~ '. v .*’ return a* (p是属性,v是值,String类型的值要用双引号括起来)
所有查询必须配合return子句一起使用才能返回结果。

set命令(改)

match (a:A {p1:v1}) set a.p2 = v2 , … ,pn = vn return a 等同于
match (a:A) where a.p1 = v1 set a.p2 = v2, … , pn = vn return a

delete命令(删除节点和关系)

删除节点: match (a:A) delete a
有条件删除节点:match (a:A {p1:v1}) delete a 等同于 match (a:A) where a.p1 = v1 delete a
删除所有节点包括标签:match (a:A) detach delete a
删除节点和关系:match (a:A) - [r] -> [b:B] delete a,r,b
删除节点的关系:match (a:A) - [r] -> [b:B] delete r
删除所有节点和关系:match (n) optional match (n) - [r] - () delete n,r

remove命令(删除标签和属性)

无条件删除节点的属性(类似删除实体类的字段):match (a:A) remove a.p1,a.p2, … ,a.pn
有条件删除节点的属性:match (a:A {p1:v1}) remove a.p2
等同于 match (a:A) where a.p1 = v1 remove a.p2
删除标签:match (a:A) remove a:L (使用情况较少,建议使用detach delete)
match (a:A) detach delete a (会删除标签A和所有A下面的节点)

创建关系命令

查看关系
match p = () - [:R] -> () return p

使用现有节点创建没有属性的关系
match (a:A) ,(b:B) create (a) - [r:R] ->(b) return r
等同于 match (a:A) match (b:B) create (a) - [r:R] ->(b) return
r

使用现有节点创建有属性的关系
match (a:A) ,(b:B) create (a) - [r:R {p1:v1,p2:v2, … , pn:vn}] ->(b) return r (可以返回r的某些属性,.出属性名即可)

使用新节点创建没有属性的关系
create (a:A) - [r:R] -> (b:B) return r

使用新节点创建有属性的关系
create (a:A {p1:v1,p2:v2, … ,pn:vn}) - [r:R {p1:v1,p2:v2, … , pn:vn}] -> (b:B{p1:v1,p2:v2, … ,pn:vn}) return r

查询关系的深度

*match data = (a:A {p1:v1}) - [1…2] -> (b:B) return data
大括号里面可以写成[] 代表从头查到尾,如果有双向关系的话,并且会两头查
[]中 1 代表从1开始,到第2层结束,包含1不包含2,类似于数学里面的集合用法。可以根据数学里面集合用法来达到想要的效果。
并且大括号中可以指定关系类型,这样就会查指定的关系,如[:Child …5] 表示只查Child的关系,查5层。

关系函数

不区分大小写
STRATNODE(开始节点) ENDNODE(结束节点) ID(id不建议使用,因为id会重复) TYPE(关系类型)
match (a) - [r:R] -> (b) return startnode® 用来知道关系的开始节点
match (a) - [r:R] -> (b) return endnode® 用来知道关系的结束节点
match (a) - [r:R] -> (b) return id® 用来知道关系的id
match (a) - [r:R] -> (b) return type® 用来知道关系的类型

CQL函数用法

排序(默认升序)
match (a:A) return a order by a.p1 (order by 在 return 后)

合并(union union all 和MySQL用法类似)
match (a:A) return a.p1,a.p2, … ,a.pn
union (union all 可选择)
match (b:B) return b.p1,b.p2, … ,b.pn
注意:p1,p2, … ,pn 必须要一一对应。

限制和跳过(limit 和 skip)
limit用来限制返回数据前几行
skip用来限制返回数据跳过几行,显示剩下的数据
match (a:A) return a limit (skip) number

merge 合并
与create语法相同,不同的是create创建是不管你数据库是否有此节点的相同属性数据,它都会添加进去。merge是数据库有相同的属性数据就不添加,反之添加。
merge (a:A {p1:v1,p2:v2, … , pn:vn})

null值判断
match (a:A) where a.p1 is null return a

in操作符
同MySQL操作,注意 in 使用 【】,没有not in 用法。
match (a;A) where a.p1 in [ … ] return a

字符串函数
upper()转大写 lower()转小写 substring()截取字符串,只能用于字符串
聚合函数
count() 统计个数 max()最大 min()最小 sum()求和 avg()求平均
match (a:A) return 聚合函数 …

更多用法请启动neo4j服务,进localhost:7474自行组合技diy,有错误请指出,谢谢~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值