1. 程式人生 > >neo4j 基本語法筆記(全)

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