Neo4j之Cypher:Cypher查询语言的简介、语法、使用案例之详细攻略
Neo4j之Cypher:Cypher查询语言的简介、语法、使用案例之详细攻略
目录
Cypher查询语言的简介
cypher是数据库用语,不用编写复杂的查询代码即可实现对图数据库的操作。Cypher是一种声明性的图查询语言,允许对图进行高效的查询、更新和管理。它的设计适合开发人员和操作专业人员。Cypher的设计简单,但功能强大;高度复杂的数据库查询可以很容易地表示,使您能够专注于您的领域,而不是迷失在数据库访问中。
Cypher受到许多不同方法的启发,并建立在已建立的表达查询实践的基础上。许多关键字,如WHERE和ORDER BY,都受到SQL的启发。模式匹配借用SPARQL的表达式方法。一些列表语义是从Haskell和Python等语言中借来的。Cypher的结构基于英文散文和简洁的图标,使查询变得容易,无论是写还是读。
Cypher 查询针对 Neo4j 数据库执行,但通常适用于特定图形。重要的是要理解这些术语的含义,以及究竟什么时候图形不是数据库。
官方文档:Introduction - Cypher Manual
Cypher查询语言的语法
1、基础语法
neo4j内要使用操作图数据库的语言,即Cypher查询语言,如下所示
查询数据库中的所有节点,即查询数据库里的数据
# match是匹配规则,(n)表示所有节点,语法要求加上小括号
match(n) return n
增加
创建一个节点
# p1是变量名,Person是节点名,{}内包含了节点的两个属性
CREATE (p1:Person { name: "Tom", age: 20})
为节点增加属性
create(p1:Person{name:"Tom"})
match(p1) set p1.age = 20
创建两个节点并建立关系
# 创建了两个节点,并且Tom知道Bob,但Bob不知道Tom
create
(p1:Person{name:"Tom", age:20}),
(p2:Person{name:"Bob", age:22}),
(p1)-[:KNOWS]->(p2)
删除
删除单节点并再次查询
match(p1:Person) detach delete p1
match(n) return n
match (a:Person {city:'shanghai'}) delete a
# 删除标签类型为Person,city属性为shanghai的节点
删除所有内容
match (n) detach delete n
改
修改节点属性
match(p1) set p1.age = 33
查
查询所有对外有关系的节点
match (a)-->() return a
查询所有有关系的节点
match (a)--() return a
查询所有对外有关系的节点,以及关系类型
match (a)-[r]->() return a.name, type(r)
查询所有具有某种关系的节点
match (n)-[:relation]-() return n
match (n)-[:married]-() return n //表示的是查询所有有结婚关系的节点
查询这两个节点及关系
创建两个节点并建立关系
# 创建了两个节点,并且Tom知道Bob,但Bob不知道Tom
create
(p1:Person{name:"Tom", age:20}),
(p2:Person{name:"Bob", age:22}),
(p1)-[:KNOWS]->(p2)
MATCH (p1: Person)-[KNOWS]-(p2: Person) return p1,KNOWS,p2
Cypher查询语言的使用案例
1、基础案例
CREATE (john:Person {name: 'John'})
CREATE (joe:Person {name: 'Joe'})
CREATE (steve:Person {name: 'Steve'})
CREATE (sara:Person {name: 'Sara'})
CREATE (maria:Person {name: 'Maria'})
CREATE (john)-[:FRIEND]->(joe)-[:FRIEND]->(steve)
CREATE (john)-[:FRIEND]->(sara)-[:FRIEND]->(maria)
相关文章
- mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)
- AI之FL:联邦学习(Federated Learning,分布式机器学习技术)的分类详解(纵向联邦学习/横向联邦学习)、使用方法、实战案例之详细攻略
- XAI之GS:全局代理(Global Surrogate,对黑盒机器学习执行模型可解释性的技术)的简介、常用工具包、案例应用之详细攻略
- VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的简介、案例应用之详细攻略
- Python语言学习:Python语言学习之函数(定义&调用函数/常用内置函数如filter&map/内嵌函数/闭包/匿名函数如lambda&map)的简介、案例应用之详细攻略
- DataScience:机器学习中特征工程之连续型变量离散化—变量分箱的简介、常用方法、案例应用(评分卡模型为例)之详细攻略
- Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图、折线图、标注文字、图例、三维坐标)之详细攻略
- C++:C++编程语言学习之基本数据类型/流程控制(if else/switch/for/while循环语句)的简介、案例应用之详细攻略
- C++:C++编程语言学习之数组/指针的简介、案例应用之详细攻略
- ML之RL:强化学习Reinforcement Learning的简介、应用、经典案例、学习资源之详细攻略
- NLP之LSA/GloVe:LSA/GloVe的简介、使用方法、案例应用之详细攻略
- ML之ME/LF:机器学习之风控业务中常用模型监控指标CSI(特征稳定性指标)的简介、使用方法、案例应用之详细攻略
- ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
- BigData之Storm:Apache Storm的简介、深入理解、下载、案例应用之详细攻略
- ML之FE:数据处理—特征工程的简介、使用方法、案例应用之详细攻略
- ML之Clustering之K-means:K-means算法简介、应用、经典案例之详细攻略
- DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)
- BigData之Spark:Spark(大数据通用的分布式开源计算引擎)的简介、下载、经典案例之详细攻略
- Python编程语言学习:python中浅复制/深复制(或浅拷贝/深拷贝)的简介、案例应用注意事项之详细攻略
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
- Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略
- 【SPSS】交叉设计方差分析和协方差分析详细操作教程(附案例实战)