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命令增删改查演示内容,感谢阅读,祝君暴富!

相关推荐
王ASC1 小时前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle
Dlwyz1 小时前
问题: redis-高并发场景下如何保证缓存数据与数据库的最终一致性
数据库·redis·缓存
如意机反光镜裸2 小时前
如何快速将Excel数据导入到SQL Server数据库
数据库
不爱学习的啊Biao2 小时前
初识mysql数据库
数据库·mysql·oracle
宛唐羁客3 小时前
ODBC连接PostgreSQL数据库后,网卡DOWN后,客户端进程阻塞问题解决方法
网络·数据库
吴半杯3 小时前
Redis-monitor安装与配置
数据库·redis·缓存
是桃萌萌鸭~4 小时前
mysqldbcompare 使用及参数详解
数据库·mysql
gma9994 小时前
brpc 与 Etcd 二次封装
数据库·c++·rpc·etcd
Yz98764 小时前
hive复杂数据类型Array & Map & Struct & 炸裂函数explode
大数据·数据库·数据仓库·hive·hadoop·数据库开发·big data
小鹿撞出了脑震荡5 小时前
SQLite3语句以及用实现FMDB数据存储的学习
数据库·学习·sqlite