当前位置:网站首页>Neo4J 与 Cypher 查询语言基础
Neo4J 与 Cypher 查询语言基础
2022-08-10 03:13:00 【1379號监听猿】
前言
图数据库,存储的是节点和关系,而不是表。在Neo4j中,节点和关系都由属性和标签描述。
在 Cypher 查询语句中,节点和关系的表述一般为:
- 节点:
(Variable:Label1:Label2{properties})
其中,Variable
可以省略 - 关系:
-[Variable:Label1:Label2{properties}]->
其中,Variable
可以省略,箭头可以向左(<-[]-
),向右(-[]->
),或没有(-[]-
),分别表示不同的关系方向和无方向的关系。
如下图:其中:
- (:Person{name:“Dan”}) 表示一个节点,Person 是他的标签。{name:“Dan”} 是他的属性。
- -[:LOVES]-> 代表一个关系,LOVES 是关系的标签。
1、创建
1.1 创建节点
语法:
CREATE <nodeDes>
nodeDes:即上文提到的 (Variable:Label1:Label2{properties})
比如:
CREATE (:Person)
CREATE (:Person{name:'罗辑'})
也可以在语句后添加 RETURN 子句返回创建的节点(在游览器操作时,能直接查看创建的节点):
CREATE (p:Person{name:'罗辑'}) RETURN p
1.2 创建关系
在两个新节点之间创建关系
语法:
CREATE <NodeDes_1> <RelationDes> <NodeDes_2>
其中:
- NodeDes:
(Variable:Label1:Label2{properties})
- RelationDes:
-[Variable:Label1:Label2{properties}]->
向右关系详细版:
CREATE
(<from-name>:<from-label>)-
[<relationship-name>:<relationship-label>{
{
<properties>}}]->
(<to-name>:<to-label>)
RETURN <from-name>,<relationship-label-name>,<to-name>
例如:
没有properties属性:
CREATE (p1:Person{name:'罗辑'})-[like:MARRIED_TO]->(p2:Person{name:'庄严'})
RETURN p1,like,p2
有properties属性:
CREATE (p1:Person{name:'罗辑'})-[like:MARRIED_TO{introducer:'史强'}]->(p2:Person{name:'庄严'})
RETURN p1,like,p2
在已有节点上创建属性
语法:
MATCH <NodeDes_1>, <NodeDes_2>
CREATE <NodeDes_1_Variable> <RelationDes> <NodeDes_2_Variable>
向右关系完整版本:
MATCH (<from-name>:<from-label>{properties}),(<to-name>:<to-label>{properties})
CREATE
(<from-name>)-[<relationship-name>:<relationship-label>{
<properties>}]->(<to-name>)
RETURN <relationship-label-name>
其中 CREATE 可以替换为 MERGE 指令
例如:
1、创建节点
CREATE (p:Person{name:'叶文洁'}) RETURN p;
CREATE (p:Person{name:'杨卫宁'}) RETURN p;
2、创建关系
MATCH (fromP:Person {name:'叶文洁'}),(toP:Person {name:'杨卫宁'})
CREATE (from)-[kill:KILL{address:'第一红岸'}]->(to)
RETURN from,kill,to
或者:
MATCH (from:Person),(to:Person)
WHERE from.name = '叶文洁' AND to.name = '杨卫宁'
CREATE (from)-[kill:KILL{address:'第一红岸'}]->(to)
RETURN from,kill,to
或者:
MATCH (fromP:Person {name:'叶文洁'}),(toP:Person {name:'杨卫宁'})
MERGE (fromP)-[kill:KILL{address:'第一红岸'}]->(toP)
RETURN fromP,kill,toP
2、查询
MATCH
语法:
MATCH command
WHERE condition
RETURN x
说明:
- WHERE 子句和 sql 类似。
查询所有节点:
MATCH (n) RETURN n
MATCH (p:Person{name:'罗辑'}) RETURN p
上句也等价于:
MATCH (p:Person)
WHERE p.name = '罗辑'
RETURN p
3、删除
语法:
MATCH command
WHERE condition
(DETACH) DELETE x
删除边:
MATCH (from:Person{name:'罗辑'})-[like]-(to:Person{name:'庄严'})
DELETE like
删除节点(必须相关的边都被删除了):
MATCH (p:Person{name:'罗辑'})
DELETE p
强制删除节点和边:
MATCH (p:Person{name:'罗辑'})
DETACH DELETE p
同时删除节点和边:
MATCH (from:Person{name:'叶文洁'})-[like]-(to:Person{name:'杨卫宁'})
DELETE from,like,to
清空节点和边:
MATCH (n) DETACH DELETE n
4、修改属性
SET语法:
SET <property-key>=<property-value>
例如:
MATCH (p:Person{name:'罗辑'})
SET p.description='混吃等死清华教授'
REMOVE语法:
REMOVE <property-name-list>
例如:
MATCH (p:Person{name:'罗辑'})
REMOVE p.description
参考
边栏推荐
- 单体架构应用和分布式架构应用的区别
- Take you to an in-depth understanding of the version update of 3.4.2, what does it bring to users?
- 小程序wxs
- nodejs 时钟案例(fs模块),重复使用fs.writeFile方法,旧内容会被覆盖
- The Evolutionary History of the "Double Gun" Trojan Horse Virus
- vite基础,vite中 `@`符号是不被支持,不用@符号,直接用层级(./,../等)
- Error state based Kalman filter ESKF
- 从零开始配置 vim(10)——快捷键配置
- shell文本编辑awk
- Web mining traceability?Browser browsing history viewing tool Browsinghistoryview
猜你喜欢
随机推荐
湖仓一体电商项目(四):项目数据种类与采集
HackTheBox——Beep
vite基础,vite中 `@`符号是不被支持,不用@符号,直接用层级(./,../等)
从零开始配置 vim(9)——初始配置
金融口译,口译中金融高频词有哪些
Small program subcontracting and subcontracting pre-download
使用注解实现限流
从零开始配置 vim(10)——快捷键配置
Chip Accelerator
电话自动拨号在电脑上自动拨打
小程序分包及分包预下载
mock模拟,skip,skipif,mark分类
元宇宙+NFT是“宝”还是“炒”
Kettle 裁剪表详解(truncate)
模型部署ONNX学习
Example 043: Scope, class methods and variables
cuda——nms
【单调栈】【概念讲解&&模板代码】
【Image Classification】2022-ResMLP
关于redis在业务中的应用问题,如何解决?