上一篇文章我们介绍的图数据库Neo4j,这篇文章我们来看一下它的查询语言——Cypher。Cypher是一种声明式图查询语言,表达高效查询和更新图数据库。关注专栏《知识图谱系列》了解更多相关知识~
目录
一、简介
1.1 常用的命令和函数
Cypher查询语言也叫做CQL,它常用的命令如下:
CQL常用的函数如下所示:
1.2 数据类型
CQL的数据类型跟Java语言类似,它们用于定义节点或关系的属性。
二、常用的命令
2.1 CREATE命令
2.1.1 创建没有属性的节点
语法如下:
CREATE (:)
其中,node-name是节点的名称,label-name是节点标签名称。
例如:
CREATE(person:Person)
2.1.2 创建具有属性的节点
语法如下:
CREATE (
:
{
:
........
:
}
)
其中,Propertyn-name是创建节点属性的名称,Propertyn-Value是创建节点属性的值。
例如:
CREATE (person:Person { name:"xzw",sex:"m",location:"QD" })
2.2 MATCH命令
MATCH命令用于从数据库获取有关节点、关系和属性的数据。语法如下:
MATCH
(
:
)
MATCH命令通常与RETURN命令一起使用。
2.3 RETURN命令
RETURN命令用于检索节点和关联关系的属性。语法如下:
RETURN
.,
........
.
例如:
CREATE (t: test {name:"xzw", sex:"m", loc: "QD"})
MATCH (t: test)
RETURN t.name,t.sex
2.4 关系
基于方向性,Neo4j关系被分为两种主要类型:单向关系和双向关系。
2.4.1 创建没有属性的关系
语法如下:
CREATE
(:)-
[:]->
(:)
RETURN
其中,relationship-name是关系的名称,relationship-label-name是关系的标签名称。上述语法中的return子句不是必须的。
例如:
CREATE (f1:Favorite1)-[like:LIKES]->(f2:Favorite2)
RETURN like
2.4.2 创建有属性的关系
语法如下:
CREATE
(:{})-
[:{}]
->(:{})
RETURN
例如:
CREATE (v1:Video1{title:"Action1",updated_by:"A",uploaded_date:"10/10/2020"})
-[movie:ACTION_MOVIES{rating:1}]->
(v2:Video2{title:"Action2",updated_by:"X",uploaded_date:"12/12/2020"})
MATCH (v1:Video1)-[movie:ACTION_MOVIES]->(v2:Video2)
RETURN movie
2.5 WHERE命令
像SQL一样,Neo4j CQL在CQL MATCH命令中提供了WHERE子句来过滤MATCH查询的结果,语法如下:
1、简单语法:WHERE
2、复杂语法:WHERE
其中,condition的语法为:
其中,
例如:
MATCH (p:People)
RETURN p.name,p.sex,p.location
MATCH (p:People)
WHERE p.name = 'xzw'
RETURN p
2.5.1 布尔运算符
2.5.2 比较运算符
2.5.3 使用WHERE子句创建关系
语法如下:
MATCH (:),(:)
WHERE
CREATE ()-[:
{}]->()
例如:
CREATE (c:Customer {id:"1", name: "xzw", sex:"m"})
CREATE (f:Fav {id:"1", favor: "sleep"})
MATCH (c:Customer)
RETURN c.id,c.name,c.sex
MATCH (f:Fav)
RETURN f.id, f.favor
MATCH (c:Customer),(f:Fav)
WHERE c.id = "1" AND f.id= "1"
CREATE (c)-[r:Relat{location:"QD"}]->(f)
RETURN r
2.6 DELETE命令
删除节点及相关节点和关系。
2.6.1 删除节点
语法如下:
DELETE
例如:
MATCH (p:People)
RETURN p.name
MATCH (p:People) DELETE p
MATCH (p:People)
RETURN p.name
2.6.2 删除节点和关系
语法如下:
DELETE ,,
为了节省篇幅,以下无特殊说明,不再给出示例,因为这些语法都比较简单,感兴趣的朋友可以自己测试一下。
这里值得注意的是,可以通过以下命令,删除数据库中的所有节点和关系:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
2.7 REMOVE命令
删除现有节点或关系的属性或标签。值得注意的是DELETE和REMOVE两个命令都应该与MATCH命令一起使用。REMOVE命令语法如下:
REMOVE /
其中,是一个属性列表,其用法如下:
.,
.,
....
.
它是一个标签列表,其用法如下:
:,
....
:
2.8 SET命令
SET命令用来向现有节点或者关系添加或更新属性值,其语法如下:
SET
其中,是一个属性列表,其语法如下:
.,
.,
....
.
2.9 ORDER BY 命令
Neo4j CQL在MATCH命令中提供了”ORDER BY”子句,对MATCH查询返回的结果进行排序。默认情况下,它按升序对行进行排序。 如果我们要按降序对它们进行排序,我们需要使用DESC子句。其语法如下:
ORDER BY [DESC]
其中,是属性列表,其语法如下:
.,
.,
....
.
2.10 UNION命令
它将两组结果中的公共行组合并返回到一组结果中, 它不从两个节点返回重复的行。跟SQL类似,UNION ALL是返回所有的数据。语法如下:
UNION
2.11 LIMIT和SKIP命令
LIMIT命令来过滤或限制查询返回的行数,它修剪CQL查询结果集底部的结果。如果我们要修整CQL查询结果集顶部的结果,那么我们应该使用SKIP命令。他们的语法如下:
LIMIT
SKIP
2.12 MERGE命令
MERGE命令是CREATE命令和MATCH命令的组合。它在图中搜索给定模式,如果存在,则返回结果,如果它不存在于图中,则它创建新的节点/关系并返回结果。其语法如下:
MERGE (:
{
:
.....
:
})
2.13 NULL值
Neo4j CQL将空值视为对节点或关系的属性的缺失值或未定义值。当我们创建一个具有现有节点标签名称但未指定其属性值的节点时,它将创建一个具有NULL属性值的新节点。
2.14 IN命令
与SQL一样,Neo4j CQL提供了一个IN运算符,以便为CQL命令提供值的集合。其语法如下:
IN[]
本文到此已经接近尾声了,本文主要讲述了一些Neo4j CQL常用命令,下一篇会讲一下CQL常用的函数命令。你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了什么问题~
Original: https://blog.csdn.net/gdkyxy2013/article/details/109489063
Author: 象在舞
Title: 三、Neo4j查询语言Cypher相关命令介绍
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/558160/
转载文章受原作者版权保护。转载请注明原作者出处!