Cypher是Neo4j支持的一种图数据库查询语言,其具有极强的表达能力,能够支持图数据库数据的增删改查功能。以下将罗列常用的cypher语句。
增加节点的核心为:create
1.1、增加节点
create(n:标签{name:"节点名称",age:"2"}) return n
注释:
- [标签处]输入节点标签名称(节点为多标签时输入n:标签1:标签2)
- [节点名称]输入节点名称
- n:节点的代称,可任意指定字母,a、b、c均可。
- name:花括号中写节点的属性信息,例如:名称、年龄等,形式为字典形式
- 增加多个节点:create(n:标签{name:”节点名称”,age:”2″}), (m:标签{name:”节点名称1″,age:”3″}) return n,m
1.2、增加关系
方式1:
match(a:标签
),(b:标签
) where a.name = '标签' and b.name = '标签' create(a) - [r:包括
] -> (b) return r
方式2:
match(a:标签
{name:"节点名称"}),(b:标签
{name:"节点名称1"}) create(a) - [r:包括
] -> (b) return r
1.3、增加属性
match(n:标签{name:"节点名称"}) set n.year = "2021" return n
match (n:标签{name:"节点名称"})-[r:包括]->(m:标签{name:"节点名称1"})
set r += {name:"xxx", year:"2021"}
return r
注释:上面其实提供了两种增加属性的方式,一种是通过”.”方法添加,一种是通过”+=”添加
1.4、增加索引
数据库的索引是为了使检索数据的效率更高而引入的冗余信息。它的代价是需要额外的存储空间和使得写入时变得更慢。
create index on :标签(name)
1.5、增加约束
neo4j通过使用约束来保证数据完整性。约束可应用于节点或者关系,可以创建节点属性的唯一性约束,创建节点和关系的属性存在性约束。
使用is unique语法创建约束,它能确保数据库中拥有特定标签和属性值的节点是唯一的。
create constraint on (book:Book) assert book.isbn is unique
使用assert exists(variable.propertyName)创建约束,可确保有指定标签的所有节点都有一个特定的属性。
create constraint on (book:Book) assert book.isbn is unique
使用assert exists(variable.propertyName)创建约束,可确保有指定标签的所有关系都有一个特定的属性。
create constraint on ()-[like:LIKED]-() assert exists(like.day)
2.1、 删除节点
增加节点的核心为:先match(匹配)再delete(删除)
match(n:标签{name:"节点名称"}) delete n
2.2、删除关系
match(n:标签{name:'节点名称'}) - [r:包括
] - (m:标签{name:'节点名称1'}) delete r
2.3、删除节点和关系
match(r) where id(r) = 0 detach delete r
match(n:标签{name:"节点名称"}) detach delete n
2.4、删除属性
match(n:标签{name:"节点名称"}) remove n.year return n
2.5、删除标签
match(n:标签{name:"节点名称"}) remove n:标签 return n
2.6、删除索引
drop index on :标签(name)
2.7、删除约束
使用drop constraint 可以删除数据库中的一个约束。
drop constraint on (book:Book) assert book.isbn is unique
使用drop constraint 可以删除数据库中的一个约束。
drop constraint on (book:Book) assert exists(book.isbn)
使用drop constraint 可以删除数据库中的一个约束。
drop constraint on ()-[like:LIKED]-() assert exists(like.day)
3.1、修改标签
match(n:标签) remove n:标签 set n:标签X
3.2、修改节点
match(n:标签{name:"节点名称"}) set n.age = "10" return n
match(n:标签{name:"节点名称"}) remove n.age set n.ages = "10" return n
3.3、修改关系
match (n:标签{name:"节点名称"})-[r:包括]->(m:标签{name:"节点名称1"})
create (n)-[r2:包含]->(m)
set r2 = r
with r
delete r
match (n:标签{name:"节点名称"})-[r:包括]->(m:标签{name:"节点名称1"})
set r.year = "x"
return r
4.1、查询所有点
match(n) return n
4.2、查某一标签下所有点
match(n:标签) return n
4.3、查具体某个点
match(n:标签{name:"节点名称"}) return n
4.4、返回关系
match(n:标签{name:'标签名称'}) - [r:包括
] - (m:标签{name:'标签名称1'}) return r
4.5、返回属性
match(n:标签{name:'标签名称'}) return n.name
4.6、查找孤立点
match (n) where not(n)-[]-() return n
Original: https://blog.csdn.net/zhichaoxia/article/details/116014629
Author: 风吹半夏灬
Title: 【知识图谱系列】-【Neo4j】之Cypher 一
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/557157/
转载文章受原作者版权保护。转载请注明原作者出处!