【知识图谱系列】-【Neo4j】之Cypher 一

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球