天天看點

3.3-Cypher語言及文法使用

Cypher是一種圖資料庫查詢語言,表現力豐富,查詢效率高,其地位和作用與關系型資料庫中的SQL語言相當。

Cypher具備的能力:

  • Cypher通過模式比對圖資料庫中的節點和關系,來提取資訊或者修改資料。
  • Cypher語句中允許使用變量,用來表示命名、綁定元素和參數。
  • Cypher語句可以對節點、關系、标簽和屬性進行建立、更新和删除操作。
  • Cypher語句可以管理索引和限制。

Cypher的簡單文法:

  • 1、節點文法:采用一對圓括号來表示節點。如:

    ()

    (foo)

  • 2、關系文法:使用一對短橫線表示無方向關系,有方向加箭頭。如:

    -[role]-

    -[:ACTED_IN]->

    -[role:ACTED_IN]->

  • 3、模式文法:将節點和關系的文法組合在一起可以表達模式。如:

    (keanu: Person: Actor {name: "Keanu Rteves"}-[role:ACTED_IN {roles: ["Neo"]}]->{matrix: Movie {title: "The Matrix"}})

Cypher處理值支援的類型:

  • 數值、字元串、布爾、節點、關系、路徑、映射Map、清單List

Cypher查詢語言中的所有函數:

  • 斷言(Predicate)函數、标量(Scalar)函數、清單(List)函數、數學(Math)函數、字元串(String)函數、自定義函數

Neo4j程式開發模式:

  • Java嵌入式開發模式,Java開發人員完全可以直接在代碼中調用Neo4j的API,并将對Neo4j資料庫的操作嵌入到Java代碼中;
  • 驅動開發模式,使用.net、JavaScript、Python、php等內建的驅動包或驅動庫就可以與Neo4j互相對話

常用的語句

  • 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 //建立節點屬性唯一限制

【閱讀原文...】

聲明:責編内容由 稀土掘金 釋出,CoLaBug.com 無法對本文内容的真實性提供任何保證,請自行驗證并承擔相關的風險與後果!CoLaBug.com 遵循[CC BY-SA 4.0]分享,并保持客觀立場。如您有版權、意見、投訴等問題,請通過[eMail]聯系我們處理。原文位址:https://www.colabug.com/6381865.html