neo4j的CQL命令实例演示

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

CQL命令实例演示

  • 一、缩写
  • 二、Node节点操作
    • [1. 创建节点](#1. 创建节点)
    • [2. 查询节点](#2. 查询节点)
      • [2.1 查询全部节点](#2.1 查询全部节点)
      • [2.2 查询指定标签的节点](#2.2 查询指定标签的节点)
      • [2.3 查询指定标签指定属性的节点](#2.3 查询指定标签指定属性的节点)
    • [3. 修改节点](#3. 修改节点)
    • [4. 删除节点](#4. 删除节点)
      • [4.1 删除指定标签指定属性的节点](#4.1 删除指定标签指定属性的节点)
      • [4.2 删除指定标签节点](#4.2 删除指定标签节点)
      • [4.3 删除全部节点](#4.3 删除全部节点)
      • [4.4 永久删除](#4.4 永久删除)
  • 三、Relationship关系操作
    • [1. 创建关系](#1. 创建关系)
    • [2. 查询关系](#2. 查询关系)
      • [2.1 查询所有的关系](#2.1 查询所有的关系)
      • [2.2 条件查询关系](#2.2 条件查询关系)
      • [2.3 条件查询关系-where](#2.3 条件查询关系-where)
      • [2.4 查询指定两个节点的关系](#2.4 查询指定两个节点的关系)
    • [3. 修改关系](#3. 修改关系)
      • [3.1 批量修改关系信息](#3.1 批量修改关系信息)
      • [3.2 修改指定两个节点的关系](#3.2 修改指定两个节点的关系)
      • [3.3 指定开始节点来修改关系信息](#3.3 指定开始节点来修改关系信息)
      • [3.4 指定结束节点来修改关系信息](#3.4 指定结束节点来修改关系信息)
    • [4. 删除关系](#4. 删除关系)
      • [4.1 批量删除指定标签的所有关系](#4.1 批量删除指定标签的所有关系)
      • [4.2 删除指定标签指定属性为开始节点的所有关系](#4.2 删除指定标签指定属性为开始节点的所有关系)
      • [4.3 删除指定标签指定属性为结束节点的所有关系](#4.3 删除指定标签指定属性为结束节点的所有关系)
      • [4.5 删除指定标签指定属性的两个节点的所有关系](#4.5 删除指定标签指定属性的两个节点的所有关系)
      • [4.2 删除指定标签为开始节点的所有关系](#4.2 删除指定标签为开始节点的所有关系)
      • [4.1 批量删除所有关系](#4.1 批量删除所有关系)

一、缩写

n :node节点
L :Label标签
p :属性名
v :属性值
r :关系
R :关系标签

属性值为字符串或者数字,其余好像会报错,目前尝试这两个类型不会报错

文章中的语法的缩写字母并非固定,可以任意字母更换,但推荐使用对应缩写,方便理解和记忆。


二、Node节点操作

对node节点的增删改查操作

1. 创建节点

create新增,语法

java 复制代码
create(n:L{p1:v1,p2:v2}) return n

花括号中节点的属性可以是一个也可以是多个

不定义属性时属性值为空,仅有一个id默认属性

如:创建u节点,标签为USER,属性name值为李白,属性age为28,并返回创建的节点

java 复制代码
create(u:USER{name:"李白",age:28}) return u

为了后面的演示,我们这里多创建几个,依次执行以下命令

java 复制代码
	//注意,age对应的值都是数字类型
    create(u:USER{name:"王昭君",age:24})
    create(u:USER{name:"貂蝉",age:20})
    create(u:USER{name:"吕布",age:26})
    //注意,price对应的值都是字符串类型
    create(c:CAR{name:"奔驰",price:"30"})
    create(c:CAR{name:"宝马",price:"29"})
    create(c:CAR{name:"奥迪",price:"33"})
    create(c:CAR{name:"比亚迪",price:"25"})

注:这里需要注意,在创建节点时,属性name的值会显示在查看时的节点中心,如果属性名不是name可能不会显示(不一定),我用userName作为属性名它是不显示的,这点需要注意,不过不影响使用,信息都会在节点中,只是看浏览器中节点中心没有名称了而已

2. 查询节点

match查询

2.1 查询全部节点

语法(括号可以省略)

java 复制代码
match(n) return(n)
//或
match(n) return n

在浏览器中输入上述命令查询所有节点

2.2 查询指定标签的节点

语法

java 复制代码
match(n:L)

如:查看CAR标签的所有节点

java 复制代码
match(c:CAR)return c

这里只会显示CAR标签的节点

2.3 查询指定标签指定属性的节点

语法

java 复制代码
match(n:L{p1:v1,p2:v2})

如:查看标签为CAR属性名为name值为宝马的节点

java 复制代码
match(c:CAR{name:"奥迪"})

3. 修改节点

set修改,但需要配合match搜索使用,语法

java 复制代码
match(n:L{p1:v1,p2:v2})set n.p1=v11,n.p2=v22

如修改标签为CAR属性name值为奥迪的节点,将其属性price的值改为40

java 复制代码
match(c:CAR{name:"奥迪"})set c.price=40

不适用return时返回的是一行描述信息

java 复制代码
match(c:CAR{name:"奥迪"})set c.price=41 return c

加上return返回的内容就是如数据了,如下

4. 删除节点

delete删除,如果节点存在关系,则无法使用delete删除,此时需要在delete前加上detach关键字强制删除

(为了不重新创建关系,删除节点部分是在删除关系后操作的,属于整篇文章最后演示的内容)

先查看全部节点

java 复制代码
match(n)return n

4.1 删除指定标签指定属性的节点

语法

java 复制代码
match(n:L{p1:v1,p2:v2})delete n

如:删除标签为CAR属性name为宝马的节点

java 复制代码
match(c:CAR{name:"宝马"}) delete c

查看全部节点验证

java 复制代码
match(n)return n

宝马已被删除

4.2 删除指定标签节点

语法

java 复制代码
match(n:L) delete n

如删除标签为CAR的所有节点

java 复制代码
match(c:CAR) delete c

查看全部节点验证

java 复制代码
match(n)return n

CAR标签的节点已全被删除

4.3 删除全部节点

语法

java 复制代码
match(n) delete n

查看全部节点验证

java 复制代码
match(n)return n

所有节点已全被删除

4.4 永久删除

如果节点包含关系,则无法直接使用delete删除,需要使用detach配置delete强制删除

使用detach可以实现永久删除数据,语法

java 复制代码
match(n) detach delete n

三、Relationship关系操作

我们先多创建两个USER节点

java 复制代码
    create(u:USER{name:"亚瑟",age:27})
    create(u:USER{name:"安其拉",age:22})

再多创建几个CAR节点

java 复制代码
    create(c:CAR{name:"小鹏",price:"28"})
    create(c:CAR{name:"蔚来",price:"24"})
    create(c:CAR{name:"极氪",price:"30"})
    create(c:CAR{name:"智己",price:"31"})

1. 创建关系

创建两个节点之间的关系,并给关系添加属性信息,添加后返回节点和关系的图数据结果,语法

java 复制代码
match(n1:L1{p1:v1,p2:v2}),(n2:L2{p11:v11}) create(n1)-[r:R{p111:v111}]->(n2) return n1,r,n2

如在标签为USER属性name为李白的节点和标签为CAR属性name为宝马的节点之间创建关系

关系标签为BUY标签属性date值为20230728,然后返回创建后的结果

java 复制代码
match(u:USER{name:"李白"}),(c:CAR{name:"宝马"}) create (u)-[r:BUY{date:"20230728"}]->(c) return u,r,c

当然了,也可以将箭头反过来,创建关系标签为BELONG属性expire值为100

java 复制代码
match(u:USER{name:"李白"}),(c:CAR{name:"宝马"}) create (u)<-[r:BELONG{expire:"100"}]-(c) return u,r,c

为了方便后续演示,这里我们多创建几个关系

java 复制代码
    match(u:USER{name:"李白"}),(c:CAR{name:"奥迪"}) create (u)-[r:BUY{date:"20230728"}]->(c) return u,r,c
    match(u:USER{name:"李白"}),(c:CAR{name:"奥迪"}) create (u)<-[r:BELONG{expire:"200"}]-(c) return u,r,c
    match(u:USER{name:"亚瑟"}),(c:CAR{name:"比亚迪"})create (u)-[r:BUY{date:"20230729"}]->(c) return u,r,c
    match(u:USER{name:"貂蝉"}),(c:CAR{name:"智己"})create (u)-[r:BUY{date:"20230830"}]->(c) return u,r,c
    match(u:USER{name:"安其拉"}),(c:CAR{name:"小鹏"})create (u)-[r:BUY{date:"20230720"}]->(c) return u,r,c
    match(u:USER{name:"王昭君"}),(c:CAR{name:"极氪"})create (u)-[r:BUY{date:"20230930"}]->(c) return u,r,c
    match(u:USER{name:"吕布"}),(c:CAR{name:"奔驰"})create (u)-[r:BUY{date:"20230930"}]->(c) return u,r,c

2. 查询关系

同样的查询关系也是用match

2.1 查询所有的关系

语法

java 复制代码
match(n1)-[r]->(n2)return n1,r,n2

这里好像有没有箭头都可以,>可省略

如查询所有节点的关系

java 复制代码
match(u)-[r]->(c) return u,r,c

只会查看所有带关系的数据,不存在关系的数据不在其中

如果return后不加节点只有关系参数r,则返回的是json格式的数据信息

java 复制代码
match(u)-[r]->(c) return r

2.2 条件查询关系

查询n1节点属性p1、p2对应的所有关系,语法

java 复制代码
match(n1:L1{p1:v1,p2:v2})-[r]->(n2) return n1,r,n2

如:查看USER标签的属性name为李白的节点的所有关系

java 复制代码
match(u:USER{name:"李白"})-[r]->(c)return u,r,c

2.3 条件查询关系-where

使用where子句查询属性p1值为v1属性p2值为v2的n1节点的所有关系

java 复制代码
match(n1)-[r]->(n2) where n1.p1=v1 and n1.p2=v2 return n1,r,n2

如:查看USER标签的属性name为李白的节点的所有关系

java 复制代码
match(u)-[r]-(c) where u.name="李白" return u,r,c

2.4 查询指定两个节点的关系

语法

java 复制代码
match(n1:L1{p1:v1})-[r]->(n2:L2{p2:v2})return n1,r,n2

如查看USER标签的属性name为李白的节点和CAR标签属性name为宝马的所有关系

java 复制代码
match(u:USER{name:"李白"})-[r]->(c:CAR{name:"宝马"})return u,r,c

或者(where子句查询)

java 复制代码
match(u)-[r]-(c) where u.name="李白" and c.name="宝马" return u,r,c

3. 修改关系

3.1 批量修改关系信息

修改指定关系标签的指定属性信息

将标签为R的所有关系属性pr1改为vr1,并返回修改后的图数据,语法

java 复制代码
match(n1)-[r]-(n2) set r.pr1 = vr1 return n1,r,n2
//或
match(n1)-[r:R]-(n2) set r.pr1 = vr1 return n1,r,n2

如:将所有关系标签为BELONG的属性expire的值改为200

java 复制代码
match(u)-[r:BELONG]-(c) set r.expire=200 return u,r,c

我们可以看到只有李白有BELONG关系,且这两个关系的属性expire都改为了200

3.2 修改指定两个节点的关系

修改两个指定节点的指定关系标签的关系属性信息,语法

java 复制代码
match(n1:L1{p1:v1})-[r]->(n2:L2{p2:v2}) set r.pr1=vr1 return n1,r,n2
//或
match(n1:L1{p1:v1})-[r:R]->(n2:L2{p2:v2}) set r.pr1=vr1 return n1,r,n2

如:修改李白和奥迪两个节点的BUY关系的属性,将date的值改为20230808

java 复制代码
match(u:USER{name:"李白"})-[r:BUY]->(c:CAR{name:"奥迪"}) set r.date="20230808" return u,r,c

3.3 指定开始节点来修改关系信息

java 复制代码
match(n1:L1{p1:v1})-[r:R]->(n2) set r.pr1=vr1  return n1,r,n2

如:指定李白为开始节点,根据开始节点修改李白对应的BUY标签关系的信息,将date属性值都改为20230909

java 复制代码
match(u:USER{name:"李白"})-[r:BUY]->(c) set r.date="20230909" return u,r,c

3.4 指定结束节点来修改关系信息

箭头可指向右侧也可指向左侧

java 复制代码
match(n1:L1{p1:v1})<-[r:R]-(n2) set r.pr1=vr1  return n1,r,n2

如:指定李白为结束节点,根据结束节点修改李白对应的BELONG标签关系的信息,将expire属性值都改为500

java 复制代码
match(u:USER{name:"李白"})<-[r:BELONG]-(c) set r.expire="500" return u,r,c

4. 删除关系

4.1 批量删除指定标签的所有关系

语法

java 复制代码
match(n1)-[r:R]->(n2) delete r

如:删除BELONG标签的所有关系

java 复制代码
match(u)-[r:BELONG]->(c) delete r

查看所有关系,看是否被删除

java 复制代码
match(u)-[r]->(c)return u,r,c

的确删除了

4.2 删除指定标签指定属性为开始节点的所有关系

语法

java 复制代码
match(n1:L1{p1:v1})-[r]->(n2) delete r

如:删除以李白为开始节点的所有关系

java 复制代码
match(u:USER{name:"李白"})-[r]->(c) delete r

查看所有关系,看是否被删除

java 复制代码
match(u)-[r]->(c)return u,r,c

没有看到李白的节点,表示已经没有存在的关系了

4.3 删除指定标签指定属性为结束节点的所有关系

语法

java 复制代码
match(n1:L1{p1:v1})<-[r]-(n2) delete r

如:删除以比亚迪为结束节点的所有关系

java 复制代码
match(c:CAR{name:"比亚迪"})<-[r]-(u) delete r

查看所有关系,看是否被删除

java 复制代码
match(u)-[r]->(c)return u,r,c

已经没有了比亚迪节点的关系

4.5 删除指定标签指定属性的两个节点的所有关系

语法

java 复制代码
match(n1:L1{p1:v1})-[r]-(n2:L2{p2:v2}) delete r

如:删除安其拉到小鹏之间的关系

java 复制代码
match(u:USER{name:"安其拉"})-[r]->(c:CAR{name:"小鹏"}) delete r

查看所有关系,看是否被删除

java 复制代码
match(u)-[r]->(c)return u,r,c

安其拉已经无了

4.2 删除指定标签为开始节点的所有关系

语法

java 复制代码
match(n1:L1)-[r]->(n2) delete r

如:删除以USER标签为开始节点的所有关系

java 复制代码
match(u:USER)-[r]->(c) delete r

查看所有关系,看是否被删除

java 复制代码
match(u)-[r]->(c)return u,r,c

含有关系的节点已经全部没了

4.1 批量删除所有关系

语法

java 复制代码
match(n1)-[r]->(n2) delete r

举例,可直接使用

我这里直接用

java 复制代码
match(u)-[r]->(c) delete r

前面已经删除完了,不演示了。


以上就是CQL命令增删改查演示内容,感谢阅读,祝君暴富!

相关推荐
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO11 分钟前
MySQL事务
数据库·mysql
cyt涛2 小时前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok
Rookie也要加油2 小时前
01_SQLite
数据库·sqlite
liuxin334455662 小时前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
看山还是山,看水还是。3 小时前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec3 小时前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa3 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke4 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D4 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录4 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份