【知识图谱系列】-【Neo4j】之Cypher 一
Cypher简述Cypher是Neo4j支持的一种图数据库查询语言,其具有极强的表达能力,能够支持图数据库数据的增删改查功能。以下将罗列常用的cypher语句。1、增增加节点的核心为:create1.1、创建节点create(n:标签{name:"节点名称",age:"2"}) return n注释:[标签处]输入节点标签名称(节点为多标签时输入n:标签1:标签2)[节点名称]输入节点名称n:节点
Cypher简述
Cypher是Neo4j支持的一种图数据库查询语言,其具有极强的表达能力,能够支持图数据库数据的增删改查功能。以下将罗列常用的cypher语句。
1、增
增加节点的核心为: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通过使用约束来保证数据完整性。约束可应用于节点或者关系,可以创建节点属性的唯一性约束,创建节点和关系的属性存在性约束。
1.5.1、创建唯一性约束
使用is unique语法创建约束,它能确保数据库中拥有特定标签和属性值的节点是唯一的。
create constraint on (book:Book) assert book.isbn is unique
1.5.2、创建节点属性存在性约束
使用assert exists(variable.propertyName)创建约束,可确保有指定标签的所有节点都有一个特定的属性。
create constraint on (book:Book) assert book.isbn is unique
1.5.3、创建关系属性存在性约束
使用assert exists(variable.propertyName)创建约束,可确保有指定标签的所有关系都有一个特定的属性。
create constraint on ()-[like:LIKED]-() assert exists(like.day)
2、删
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 # 通过关系id进行删除(id通过点击关系后显示在左下角)
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、删除约束
2.7.1、删除唯一性约束
使用drop constraint 可以删除数据库中的一个约束。
drop constraint on (book:Book) assert book.isbn is unique
2.7.2、删除节点属性存在性约束
使用drop constraint 可以删除数据库中的一个约束。
drop constraint on (book:Book) assert exists(book.isbn)
2.7.3、删除关系属性存在性约束
使用drop constraint 可以删除数据库中的一个约束。
drop constraint on ()-[like:LIKED]-() assert exists(like.day)
3、改
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
# 修改关系属性(修改year属性)
match (n:标签{name:"节点名称"})-[r:包括]->(m:标签{name:"节点名称1"})
set r.year = "x"
return r
4、查
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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)