天天看點

neo4j 基本文法筆記(全)

按照總監要求看了兩天的neo4j 資料庫的使用。在網上找了一個基礎教程類似于w3c.school的網站(英文 ,中文,中文的翻譯的不是很好,如果英文不好可以輔助了解),這個教程基礎知識很全全面,從資料庫的安裝,到spring架構下的使用都有降到,由于spring架構側重于工程,目前還用不到,是以有關在spring架構下的使用沒有看。

neo4j 基礎知識點比較少,我這裡隻整理了21個。

neo4j資料庫的基本概述:

neo4j的優點:圖資料庫的有點是按照的關系深度的周遊。例如:A 的朋友的妻子的媽媽,,類似于這樣的推理,圖資料庫可以推理4層甚至五層,而關系型資料庫智能推理三層。

neo4j資料庫的容量:節點和關系大約可以存儲350億個,關系可以存儲27.5億。

neo4j圖模型規則:資料使用節點 屬性和關系表示,節點和關系包含屬性;關系連接配接節點,屬性是鍵值對,節點使用圓,關系使用箭頭來表示,關系分為單項和雙向;每個關系包含Start Node或者From Node和To Node 或者End Node;

neo4j的cql指令:create match where delete remove return orderby 組(添加或者更新标簽),可以允許兩個或者多個完全相同的節點存在。

文法和關鍵字:

1、create: create語句是建立模型語句用建立資料模型

文法格式:create(nodename:label-name { Property1-name:Property1-Value ……. Propertyn-name:Propertyn-Value })

e.g: create (nodename:Nodename{name:”king”, location:”xiamen”})

e.g.: create (A:Person{name:’jim’})-[:Friend]-(B:Person {name:’tim’})-[:Friend]-(C:Person {name:’lucy’}), (A)-[:Know]-(C)

建立一個多标簽名稱的節點:CREATE (m:Movie:Cinema:Film:Picture);

//* A 是B的朋友,B是C的朋友,A知道C; ()裡面表示的是節點,[]裡面表示的是關系;{}裡面的元素表示的是屬性;

2、match: match是查詢語句,用于查詢資料庫中的值。return 語句是傳回語句,用于傳回查詢的結果集

eg. match (a)-[:Friend]-(b) where b.name=’tim’ return b

eg. match (nodename:Nodename) return nodename.name, nodename.location

3、create +return

4、關系基礎:每個關系包含兩個節點,節點間的關系有單項關系和雙向關系。 建立關系包含,為無屬性的節點建立關系,為有屬性的節點建立關系,建立無屬性的新節點的關系,

建立有屬性的新節點關系,檢索相關節點詳細資訊。

建立單個标簽的關系, create(nodename1:nodelabel,)-(relationshipName:relationship-label_name)]-(nodeName2:nodeLabel2)

eg.CREATE (node1-name:label1-name)-[(relationship-name:relationship-label-name)]-(node2-name:label2-name)

5、where關鍵字:where文法: where condition 或者 where condition boolean-operation condition

條件(condition)的文法:property-name comparison-operator value

boolean 操作符: and or not xor(異或)

比較運算符:= (不等于) = =

eg: match (nodename:Nodename) where nodename.name=”king” return nodename

eg: match (nodename:Nodename) where nodename.name=”king” or nodename.location=”xiamen” return nodename

使用where語句建立關系: 對兩個現存節點建立一個關系,同時建立兩個節點及他們之間的關系,使用where語句對兩個現存節點建立關系。

使用where語句建立關系案例: match(node1-name:node-label1-name,node2-name:node1-name) where condition create (node1-name:node1-label)

-[relationship:relationship-name]-(node2-label-name)

6、delete關鍵字: 删除節點清單: delete nodename-list; eg: match (nodename1:nodeName) delete nodename1;

删除節點及關系: delete node1name,node2name,relationship-name eg: match (node1-name)-[relationshipn]-(node2-name)

7、remove關鍵字:用于移除節點和關鍵字屬性标簽。 remove property-name-list MATCH (book { id:122 }) REMOVE book.price RETURN book

8、set 關鍵字; 用于添加節點和關鍵字的屬性标簽 set property-name-list match (book {id:122}) set book.price=26 return book

9、分類:分類使用order by 關鍵字,按照降序使用desc 文法為 order by property-name-list [desc] eg:MATCH (emp:Employee)

RETURN emp.empid,emp.name,emp.salary,emp.deptno ORDER BY emp.name DESC

order預設為升序的方式

10、union關鍵字: union關鍵字是将用兩個結果集融合成一個結果集,有兩種形式:union和union all. 用于限制的兩個結果集必須有相投的結果列和相同結果形式

文法格式:match command1 union match command2 eg:MATCH (cc:CreditCard) RETURN cc.id,cc.number UNION MATCH (dc:DebitCard) RETURN dc.id,dc.number

union all 關鍵字:兩個隊列必須有有相同的行和相同的資料類型。 文法格式:match command1 union all match command2.

11、limit 關鍵字: 用來篩選或者限制檢索結果的行數。文法 limit number; eg. match (emp:Employee) return emp limit 3 注:篩選前面的number個結果

skip關鍵 用來篩選或者限制檢索結果的行數 文法 skip number eg. match (emp:Employe ) return emp skip 3 注 篩選後面的number個結果

12、merge 關鍵字:用于在圖中按照給定的模式搜尋,如果該模式不存在,将建立一個新的節點或者關系。文法:merge (node-name: node-label-name){

property-name: property-value)

13、null關鍵字:null 值作為節點或者關系的屬性的預設值或者未定義的值。

14、IN 關鍵字:給值的集合到定制清單指令。文法:IN[collection-of-values] eg. matche (emp:Employee) where e.id in [] return emp

15、id 屬性:id 是庫按照節點或者關系建立的順序自動添加的辨別符。

16、直接關系, 在圖資料中節點與節點之間的連結是依靠關系連結,這裡關系是具有方向的(單項或者雙向)

17、String 函數: string函數是為了按照要求處理查詢結果。string函數包含 upper lower substring relac關鍵字。

lower關鍵字将字元串全部轉化為小寫字元,substring函數是用來截取子串,replace用來替換字元串的。文法分别為: upper(input-string) lower(input-string) substring(input-string, startIndex,endIndex)

eg. MATCH (e:Employee) RETURN e.id,UPPER(e.name),e.sal,e.deptno MATCH (e:Employee) RETURN e.id,LOWER(e.name),e.sal,e.deptno

MATCH (e:Employee) RETURN e.id,SUBSTRING(e.name,0,2),e.sal,e.deptno

18、aggregation 函數: 在return 關鍵中提供了Aggregation函數,aggregation 函數主要包含count max min sum avg 關鍵字。upper關鍵是,将結果全部轉化為大寫字元

count 關鍵字是為了統計有多少個傳回值的。count (value) eg. match (e:Employee) RETURN COUNT(*);

max (property-name), 檢索傳回值中proper-name屬性最大值 min(property-name), 檢索傳回值中proper-name屬性最小值

MATCH (e:Employee) RETURN MAX(e.sal),MIN(e.sal)

avg 關鍵字:AVG(property-name)計算傳回值中屬性為property-name的平均值, sum 關鍵字:sum(property-name)計算傳回值中屬性為property-name的和,

eg. MATCH (e:Employee) RETURN SUM(e.sal),AVG(e.sal)

19、relationship 函數:relationship 函數提供一些處理節點之間的關系的函數。relationship 函數提供了STARTNODE ENDNODE ID TYPE關鍵字;

startnode (relationship-label-name) relationship-label-name 是節點或者關系的屬性名稱,傳回關系的起始節點。endnode (relationship-label-name) 傳回關系的中止節點。

id(relation-name)傳回relation-name的id

type(relation-name) 傳回關系标簽(relation-label-name)

eg. MATCH (a)-[movie:ACTION_MOVIES]-(b) RETURN ENDNODE(movie) startnode(movie)

eg. MATCH (a)-[movie:ACTION_MOVIES]-(b) RETURN ID(movie),TYPE(movie)

20.index: neo4j 支援在節點和關系的屬性索引來提高應用程式的性能。主要功能有建立索引和清除索引,

create index: create index on: label-name:property-name eg. CREATE INDEX ON :Customer (name)

drop index:DROP INDEX ON :label_name (property_name) eg. DROP INDEX ON :Customer (name)

21、create unique constraint: 建立限制的目的是為了回避重複的節點 保持資料的完成性規則。

create constraint on(label-name) assert (property-name) is unique eg.CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

DROP CONSTRAINT ON (label_name) ASSERT property_name IS UNIQUE eg. DROP CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

原文位址:https://blog.csdn.net/kingjack1176/article/details/75125700