3、Neo4j查询语言Cypher相关命令介绍

上一篇文章咱们介绍的图数据库Neo4j,这篇文章咱们来看一下它的查询语言——Cypher。Cypher是一种声明式图查询语言,表达高效查询和更新图数据库。关注专栏《知识图谱系列》了解更多相关知识~html


目录node

1、简介sql

1.1 经常使用的命令和函数数据库

1.2 数据类型ide

2、经常使用的命令函数

2.1 CREATE命令测试

2.1.1 建立没有属性的节点spa

2.1.2 建立具备属性的节点.net

2.2 MATCH命令3d

2.3 RETURN命令

2.4 关系

2.4.1 建立没有属性的关系

2.4.2 建立有属性的关系

2.5 WHERE命令

2.5.1 布尔运算符

2.5.2 比较运算符

2.5.3 使用WHERE子句建立关系

2.6 DELETE命令

2.6.1 删除节点 

2.6.2 删除节点和关系

2.7 REMOVE命令

2.8 SET命令

2.9 ORDER BY 命令

2.10 UNION命令

2.11 LIMIT和SKIP命令

2.12 MERGE命令

2.13 NULL值

2.14 IN命令


 

1、简介

1.1 经常使用的命令和函数

Cypher查询语言也叫作CQL,它经常使用的命令以下:

CQL经常使用的函数以下所示:

1.2 数据类型

CQL的数据类型跟Java语言相似,它们用于定义节点或关系的属性。

2、经常使用的命令

2.1 CREATE命令

2.1.1 建立没有属性的节点

语法以下:

CREATE (<node-name>:<label-name>)

其中,node-name是节点的名称,label-name是节点标签名称。

例如:

CREATE(person:Person)

2.1.2 建立具备属性的节点

语法以下:

CREATE (
   <node-name>:<label-name>
   { 	
      <Property1-name>:<Property1-Value>
      ........
      <Propertyn-name>:<Propertyn-Value>
   }
)

其中,Propertyn-name是建立节点属性的名称,Propertyn-Value是建立节点属性的值。

例如:

CREATE (person:Person { name:"xzw",sex:"m",location:"QD" })

2.2 MATCH命令

MATCH命令用于从数据库获取有关节点、关系和属性的数据。语法以下:

MATCH 
(
   <node-name>:<label-name>
)

MATCH命令一般与RETURN命令一块儿使用。

2.3 RETURN命令

RETURN命令用于检索节点和关联关系的属性。语法以下:

RETURN 
   <node-name>.<property1-name>,
   ........
   <node-name>.<propertyn-name>

例如:

CREATE (t: test {name:"xzw", sex:"m", loc: "QD"})
MATCH (t: test)
RETURN t.name,t.sex

2.4 关系

基于方向性,Neo4j关系被分为两种主要类型:单向关系和双向关系。

2.4.1 建立没有属性的关系

语法以下:

CREATE  
   (<node1-label-name>:<node1-name>)-
   [<relationship-label-name>:<relationship-name>]->
   (<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>

其中,relationship-name是关系的名称,relationship-label-name是关系的标签名称。上述语法中的return子句不是必须的。

例如:

CREATE (f1:Favorite1)-[like:LIKES]->(f2:Favorite2)
RETURN like

2.4.2 建立有属性的关系

语法以下:

CREATE  
	(<node1-label-name>:<node1-name>{<define-properties-list>})-
	[<relationship-label-name>:<relationship-name>{<define-properties-list>}]
	->(<node1-label-name>:<node1-name>{<define-properties-list>})
RETURN <relationship-label-name>

例如:

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查询的结果,语法以下:

一、简单语法:WHERE <condition>
二、复杂语法:WHERE <condition> <boolean-operator> <condition>
其中,condition的语法为:<property-name> <comparison-operator> <value>

其中,<comparison-operator>为CQL的比较运算符。

例如:

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 (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>)

例如:

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 <node-name-list>

例如:

MATCH (p:People)
RETURN p.name

MATCH (p:People) DELETE p

MATCH (p:People)
RETURN p.name

2.6.2 删除节点和关系

语法以下:

DELETE <node1-name>,<node2-name>,<relationship-name>

为了节省篇幅,如下无特殊说明,再也不给出示例,由于这些语法都比较简单,感兴趣的朋友能够本身测试一下。

2.7 REMOVE命令

删除现有节点或关系的属性或标签。值得注意的是DELETE和REMOVE两个命令都应该与MATCH命令一块儿使用。REMOVE命令语法以下:

REMOVE <property-name-list>/<label-name-list> 

其中,<property-name-list>是一个属性列表,其用法以下:

<node-name>.<property1-name>,
<node-name>.<property2-name>, 
.... 
<node-name>.<propertyn-name> 

<label-name-list>它是一个标签列表,其用法以下:

<node-name>:<label2-name>, 
.... 
<node-name>:<labeln-name>

2.8 SET命令

SET命令用来向现有节点或者关系添加或更新属性值,其语法以下:

SET  <property-name-list>

其中,<property-name-list>是一个属性列表,其语法以下:

<node-label-name>.<property1-name>,
<node-label-name>.<property2-name>, 
.... 
<node-label-name>.<propertyn-name>

2.9 ORDER BY 命令

Neo4j CQL在MATCH命令中提供了“ORDER BY”子句,对MATCH查询返回的结果进行排序。默认状况下,它按升序对行进行排序。 若是咱们要按降序对它们进行排序,咱们须要使用DESC子句。其语法以下:

ORDER BY  <property-name-list>  [DESC]	 

其中,<property-name-list>是属性列表,其语法以下:

<node-label-name>.<property1-name>,
<node-label-name>.<property2-name>, 
.... 
<node-label-name>.<propertyn-name>

2.10 UNION命令

它将两组结果中的公共行组合并返回到一组结果中, 它不从两个节点返回重复的行。跟SQL相似,UNION ALL是返回全部的数据。语法以下:

<MATCH Command1>
   UNION
<MATCH Command2>

2.11 LIMIT和SKIP命令

LIMIT命令来过滤或限制查询返回的行数,它修剪CQL查询结果集底部的结果。若是咱们要修整CQL查询结果集顶部的结果,那么咱们应该使用SKIP命令。他们的语法以下:

LIMIT <number>

SKIP <number>

2.12 MERGE命令

MERGE命令是CREATE命令和MATCH命令的组合。它在图中搜索给定模式,若是存在,则返回结果,若是它不存在于图中,则它建立新的节点/关系并返回结果。其语法以下:

MERGE (<node-name>:<label-name>
{
   <Property1-name>:<Pro<rty1-Value>
   .....
   <Propertyn-name>:<Propertyn-Value>
})

2.13 NULL值

Neo4j CQL将空值视为对节点或关系的属性的缺失值或未定义值。当咱们建立一个具备现有节点标签名称但未指定其属性值的节点时,它将建立一个具备NULL属性值的新节点。

2.14 IN命令

与SQL同样,Neo4j CQL提供了一个IN运算符,以便为CQL命令提供值的集合。其语法以下:

IN[<Collection-of-values>]

 

本文到此已经接近尾声了,本文主要讲述了一些Neo4j CQL经常使用命令,下一篇会讲一下CQL经常使用的函数命令。大家在此过程当中遇到了什么问题,欢迎留言,让我看看大家都遇到了什么问题~

相关文章
相关标签/搜索