- 精通Neo4j
- 龐國明等
- 753字
- 2023-07-17 19:00:59
3.1 Cypher概述
3.1.1 Cypher是什么
Cypher是一種聲明式圖數據庫查詢語言,它具有豐富的表現力,能高效地查詢和更新圖數據。對于初學者來說,Cypher使用相對簡單,但其功能還是非常強大,即便是非常復雜的數據庫查詢也能用Cypher簡要地表達出來。這使得用戶可以將精力集中在自己所從事的領域,而不用在數據庫訪問上花太多時間。
Cypher查詢語言設計非常人性化,既適合開發人員,也適合專業的運營人員(這點尤為重要)。作為一種聲明式查詢語言,Cypher專注于清晰地表達從圖中檢索什么,而不是怎么去檢索。在這一點上,它與命令式的Java語言和腳本式的Gremlin(1)語言完全不同。
Cypher博采眾長,同時也繼承了已有的慣用做法。像WHERE和ORDER BY等大多數關鍵詞均來自于SQL語言(2)。而像模式匹配表達方法借鑒于SPARQL語言(3),部分聚合(Collection)語法來源于Haskell和Python語言。
Cypher借鑒了SQL語言的結構——查詢可由各種各樣的語句組合。語句被鏈接在一起,相互之間傳遞中間結果集。查詢語言由多種不同的語句構成,這里是一些獲取圖的常用語句:
● MATCH:匹配圖模式。這是從圖中獲取數據最常見的方法。
● WHERE:不是獨立的語句,而是MATCH、OPTINAL MATCH和WITH的一部分。用于給模式添加約束或者過濾傳遞給WITH的中間結果。
● RETURN:定義返回的結果。
下面是MATCH和RETURN的例子。示例中的圖數據如圖3-1所示。

圖3-1 示例中的圖數據
例如,下面是查找名為John和John朋友的朋友的查詢語句。

結果:

提示:本章中這種框線輸出格式是通過neo4j-shell得到的,有關neo4j-shell的使用請參見“第2章 Neo4j基礎入門”。
接下來在語句中添加一些過濾。
給定一個用戶名列表,找到名字在列表中的所有節點。匹配他們的朋友,僅返回那些他們關注的name屬性以'S'開頭的用戶。

結果:

下面是一些用于更新圖常用的語句:
● CREATE(和DELETE):創建(和刪除)節點和關系。
● SET(和REMOVE):使用SET設置屬性值和給節點添加標簽,使用REMOVE移除它們。
● MERGE:匹配已經存在的或者創建新節點和模式,這對于有唯一性約束的情況非常有用。
- 計算機綜合設計實驗指導
- 有趣的二進制:軟件安全與逆向分析
- Python數據挖掘:入門、進階與實用案例分析
- InfluxDB原理與實戰
- Sybase數據庫在UNIX、Windows上的實施和管理
- Microsoft Power BI數據可視化與數據分析
- 跟老男孩學Linux運維:MySQL入門與提高實踐
- SQL優化最佳實踐:構建高效率Oracle數據庫的方法與技巧
- Oracle 12c云數據庫備份與恢復技術
- 計算機應用基礎教程上機指導與習題集(微課版)
- 深入理解InfluxDB:時序數據庫詳解與實踐
- MySQL數據庫技術與應用
- 機器學習:實用案例解析
- MySQL技術內幕:InnoDB存儲引擎
- Access 2016數據庫應用基礎