[知識圖譜] 3.3-Cypher語言及語法使用

Cypher是一種圖數據庫查詢語言,表現力豐富,查詢效率高,其地位和做用與關係型數據庫中的SQL語言至關。php

Cypher具有的能力:

  • Cypher經過模式匹配圖數據庫中的節點和關係,來提取信息或者修改數據。sql

  • Cypher語句中容許使用變量,用來表示命名、綁定元素和參數。數據庫

  • Cypher語句能夠對節點、關係、標籤和屬性進行建立、更新和刪除操做。設計模式

  • Cypher語句能夠管理索引和約束。nosql

Cypher的簡單語法:

  • 一、節點語法:採用一對圓括號來表示節點。如:()(foo)函數

  • 二、關係語法:使用一對短橫線表示無方向關係,有方向加箭頭。如:-[role]--[:ACTED_IN]->-[role:ACTED_IN]->學習

  • 三、模式語法:將節點和關係的語法組合在一塊兒能夠表達模式。如:(keanu: Person: Actor {name: "Keanu Rteves"}-[role:ACTED_IN {roles: ["Neo"]}]->{matrix: Movie {title: "The Matrix"}}).net

Cypher處理值支持的類型:

  • 數值、字符串、布爾、節點、關係、路徑、映射Map、列表List

Cypher查詢語言中的全部函數:

  • 斷言(Predicate)函數、標量(Scalar)函數、列表(List)函數、數學(Math)函數、字符串(String)函數、自定義函數

Neo4j程序開發模式:

  • Java嵌入式開發模式,Java開發人員徹底能夠直接在代碼中調用Neo4j的API,並將對Neo4j數據庫的操做嵌入到Java代碼中;設計

  • 驅動開發模式,使用.net、JavaScript、Python、php等集成的驅動包或驅動庫就能夠與Neo4j相互對話code

經常使用的語句

  • 1.建立節點語句

CREATE (n {name:"張三"}) //建立節點並給節點分配一個屬性

CREATE ({name:"李四"})-[r:have]->({bookname:"設計模式"}) //建立一個關係,給兩個節點創建關係指定關係類型、方向和綁定一個變量

  • 2.查詢語句

MATCH (n{name:"張三"}) RETURN n //根據屬性匹配節點信息

MATCH (n:Person)-[:FRIEND]->(m:Person) WHERE n.name = '張三' //匹配節點時指定標籤、屬性和關係類型

MATCH (n)-[k:KNOWS]->(f) WHERE k.since < 2000 RETURN f //根據關係屬性過濾

  • 3.節點更新和刪除

MATCH (n {name:'張三'}) SET n={age:20} //修改節點信息,覆蓋節點屬性

MATCH (n {name:'張三'}) SET n+={age:20} RETURN n //該語句不會刪除掉name屬性,而是在節點中新增age屬性

MATCH (n{name:'張三'}) remove n.age RETURN n //刪除節點屬性

MATCH (a)-[r:KNOWS]->(b) DELETE r,b //刪除一個節和關係

  • 4.索引和約束

CREATE INDEX ON :Person(name) //爲"Person"標籤的name屬性建立索引

DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE //建立節點屬性惟一約束

參考資料

相關文章
相關標籤/搜索