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
Logo

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

更多推荐