0


Neo4j -CQL的基本使用(新手快速入门)

Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言。像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
(1)它是Neo4j图形数据库的查询语言。
(2)它是一种声明性模式匹配语言
(3)它遵循SQL语法。
(4)它的语法是非常简单且人性化、可读的格式。

(下面链接是官方提供的命令查询文档)

https://neo4j.com/docs/cypher-manual/3.5/clauses/
在这里插入图片描述
在这里插入图片描述

常用命令(记住常用的就行,不会的可以直接查询)

在这里插入图片描述

1.CREATE

(1)创建一个人物节点

CREATE(n:Person{name:'🐕曹'})RETURNn

CREATE是创建操作,Person是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典。这条语句的含义就是创建一个标签为Person的节点,该节点具有一个name属性,属性值是🐕曹。
在这里插入图片描述
(2)创建更多的人物节点

CREATE(n:Person{name:'🐕达'})RETURNn;CREATE(n:Person{name:'🐕郜'})RETURNn;CREATE(n:Person{name:'雪姐'})RETURNn;CREATE(n:Person{name:'小潘潘'})RETURNn;

在这里插入图片描述
(3)然后创建关系

MATCH(a:Person{name:'🐕达'}),(b:Person{name:'🐕曹'})MERGE(a)-[:FATHER]->(b)

这里的方括号[]即为关系,FATHER为关系的类型。注意这里的箭头 -->是有方向的,表示是从a到b的关系。 如图,🐕曹和🐕达之间建立了FATHER关系:
在这里插入图片描述
但是刚刚手快不小心把FATHER(父亲)按成了FRIENDS(朋友),再继续创建FATHER关系,出现了这种情况。
在这里插入图片描述
因此我们提前熟悉DELETE命令,不删除节点仅删除关系。

MATCH(n{name:'🐕达'})-[r:FRIENDS]->()DELETEr

从名为“🐕达”的节点中删除所有关系为FRIENDS的传出关系。

然后改回我一开始想要的只有FATHER关系
在这里插入图片描述
(4)关系也可以增加属性

MATCH(a:Person{name:'🐕郜'}),(b:Person{name:'🐕曹'})MERGE(a)-[:FATHER{since:2018}]->(b)

在关系中,同样的使用花括号{}来增加关系的属性,也是类似Python的字典,这里给FATHER关系增加了since属性,属性值为2018,表示他们建立父亲关系的时间。
在这里插入图片描述
(5)同上,建立更多的关系

MATCH(a:Person{name:'🐕曹'}),(b:Person{name:'雪姐'})MERGE(a)-[:SISTERS{since:2018}]->(b);MATCH(a:Person{name:'🐕曹'}),(b:Person{name:'小潘潘'})MERGE(a)-[:SISTERS{since:2018}]->(b);MATCH(a:Person{name:'🐕达'}),(b:Person{name:'🐕郜'})MERGE(a)-[:BROTHERS{since:2019}]->(b);

在这里插入图片描述
(6)创建地区节点

CREATE(n:Location{city:'南阳'});CREATE(n:Location{city:'洛阳'});CREATE(n:Location{city:'平凉'});CREATE(n:Location{city:'南昌'});

在这里插入图片描述

(7)建立不同类型节点(人物与地区)之间的关系

MATCH(a:Person{name:'🐕曹'}),(b:Location{city:'平凉'})MERGE(a)-[:BORN_IN{year:1999}]->(b)

人物地区之间关系是BORN_IN,表示出生地,同样有一个属性,表示出生年份。
在这里插入图片描述
建立其他人的出生地

MATCH(a:Person{name:'雪姐'}),(b:Location{city:'洛阳'})MERGE(a)-[:BORN_IN{year:2000}]->(b);MATCH(a:Person{name:'小潘潘'}),(b:Location{city:'南阳'})MERGE(a)-[:BORN_IN{year:2001}]->(b);MATCH(a:Person{name:'🐕达'}),(b:Location{city:'南昌'})MERGE(a)-[:BORN_IN{year:2000}]->(b);MATCH(a:Person{name:'🐕郜'}),(b:Location{city:'洛阳'})MERGE(a)-[:BORN_IN{year:1999}]->(b);

在这里插入图片描述
(8)创建节点的时候就建好关系

CREATE(a:Person{name:'艳军'})-[r:FRIENDS]->(b:Person{name:'红伟'})

在这里插入图片描述

2.MATCH

(1)检索所有在洛阳出生的人物

MATCH(a:Person)-[:BORN_IN]->(b:Location{city:'洛阳'})RETURNa,b

在这里插入图片描述

(2)检索所有对外有关系的节点

MATCH(a)-->()RETURNa

在这里插入图片描述
返回结果为什么没有地区节点?????
答:注意这里箭头的方向,因为地区并没有指向其他节点(只是被指向)

(3)检索所有有关系的节点

MATCH(a)--()RETURNa

在这里插入图片描述
(4)检索所有对外有关系的节点,以及关系类型

MATCH(a)-[r]->()RETURNa.name,type(r)

在这里插入图片描述
在这里插入图片描述
(5)查询所有有父亲关系的节点

MATCH(n)-[:FATHER]-()RETURNn

在这里插入图片描述
(6)检索某人的朋友的朋友

MATCH(a:Person{name:'🐕达'})-[r1:FATHER]-()-[r2:SISTERS]-(b)RETURNb.nameASName

返回🐕达父亲的姐妹:
在这里插入图片描述

3.SET(对属性设置、更新、删除)(设置标签以及多个标签)

给节点增加/修改节点的属性

MATCH(a:Person{name:'🐕曹'})SETa.age=23;MATCH(a:Person{name:'🐕郜'})SETa.age=23;MATCH(a:Person{name:'🐕达'})SETa.age=22;

给🐕曹、🐕郜、🐕达追加年龄属性
在这里插入图片描述

4.WHERE(功能强大,建议去官网文档自行学习)

可用于在各种情况下使用来优化查询.

这里只介绍 布尔运算符 与 比较运算符

在这里插入图片描述
(1)比较运算符举例(对节点属性age进行30岁以下筛选)

MATCH(n)WHEREn.age<30RETURNn.name,n.age

在这里插入图片描述
(2)布尔运算符举例

MATCH(n)WHEREn.name='🐕曹'ORn.name='🐕达'RETURNn

在这里插入图片描述
使用“网格视图”查看节点详细信息
在这里插入图片描述

5.REMOVE(删除 节点和关系 的 属性)

在这里插入图片描述

删除节点的属性

MATCH(a:Person{name:'🐕曹'})REMOVEa.age

在这里插入图片描述

6.DELETE(删除节点和关系)

(1)删除平凉地区节点
在这里插入图片描述

MATCH(a:Location{city:'平凉'})DELETEa

在这里插入图片描述
报错:因为此节点还有关系。

所以此命令只能删除无关系节点。

(2)删除平凉节点及其所有关系

MATCH(a{city:'平凉'})DETACHDELETEa

在这里插入图片描述
成功!!!!!!!!!!!

(3) 仅删除关系在create(3)讲过了

(4) 删除所有节点和关系(清空数据库)

MATCH(n)DETACHDELETEn

在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_46288319/article/details/125473575
版权归原作者 兮教授~。 所有, 如有侵权,请联系我们删除。

“Neo4j -CQL的基本使用(新手快速入门)”的评论:

还没有评论