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:匹配已經存在的或者創建新節點和模式,這對于有唯一性約束的情況非常有用。
- MySQL數據庫進階實戰
- Modern Programming: Object Oriented Programming and Best Practices
- App+軟件+游戲+網站界面設計教程
- InfluxDB原理與實戰
- 數據結構與算法(C語言版)
- 數據要素五論:信息、權屬、價值、安全、交易
- Creating Dynamic UIs with Android Fragments(Second Edition)
- 深度剖析Hadoop HDFS
- 數據庫程序員面試筆試真題庫
- 數亦有道:Python數據科學指南
- Learning Proxmox VE
- 重復數據刪除技術:面向大數據管理的縮減技術
- SQL Server 2012實施與管理實戰指南
- 數據庫原理與設計實驗教程(MySQL版)
- 大數據時代系列(套裝9冊)