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經常使用的函數命令。大家在此過程當中遇到了什麼問題,歡迎留言,讓我看看大家都遇到了什麼問題~

相關文章
相關標籤/搜索