前言
因為做一個比賽的項目 ,需要用到 neo4j 數據庫,所以要學習其語言cql,特來整理一下他的基本語言。
整片的語句是按照 了 Neo4j 數據庫自帶的示例 Movie Graph 來寫的。
直接看這個博客也是沒有問題的。都是很基礎的語句。
neo4j圖數據庫中基本基礎元素與概念
1 元素基本
節點(Node)
表示一個實體記錄、就像關系數據庫當中一條記錄。一個節點包含多個屬性和標簽。
關系(Relationship)
關系用於將及誒單關聯起來構成圖,關系也稱為圖論的邊(Edge)。
屬性(Property)
節點和關系都可以有多個屬性,屬性是由鍵值對組成的,就像java當中哈希
標簽(Label)
標簽指示一組擁有相同屬性的節點,但不強制要求相同,一個節點可以有多個標簽。
路徑(path)
圖中任意兩個節點都存在由關系組成的路徑,路徑有長短之分。
2 邏輯
- mysql :
數據庫實例= =》數據庫(database)= =》表(table)= =》列==》記錄 - Neo4j:
neo4j實例= =》數據庫(graph)= =》節點= =》關系= =》屬性==》標簽(Label)
一、查詢語句
1、根據節點屬性值 返回 具體單個節點
MATCH (n: User{name: "56" })
return n;
參數解釋:
match :查詢關鍵字
n : 定義的變量,將要返回的值 賦值於他。
User :節點對象。== 一個對象包含很多節點。==
name : “56” 節點屬性 :節點屬性的值
2、根據對象返回對象中的所有屬性
MATCH (n:Person)
RETURN n.name
LIMIT 10
參數解釋
n : Person : Person類 賦值於 n,
n.name : 取出Person類中的name屬性值。
LIMIT : 限制,設置輸出到界面上的記錄條數。
3、根據屬性的條件區間 返回 所在區間的對象屬性
MATCH (n: Movie)
WHERE n.released >= 1990 AND n.released < 2000
RETURN n.title
參數解釋:
WHERE : 條件設置關鍵字。
AND : 連接兩個條件的關鍵字
解釋:查詢 電影中 屬性released在1990-2000的title屬性值。
4、查詢 節點對象 、其關系 以及 關系的節點
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies)
RETURN tom,tomHanksMovies
參數解釋:
[] :表示為關系。
:ACTED_IN : 這是例子,為主演。
tomHanksMovies : 這是例子,為演過的電影。
翻譯:名字為Tom Hanks 主演過的 電影,並返回 Tom Hanks節點和聯系 以及子節點(演過的電影)
二、創建語句
1、創建一個節點
CREATE (k : Person{ name:'魯班',born:1997}) RETURN k
參數解釋:
CREATE : 創建 節點的關鍵字。
翻譯:創建一個Person類的 節點標簽(名為魯班)。並且設置其屬性。並返回這個節點(返回之后就可以看到)
查看其節點
查詢這個剛創建的節點
MATCH (k : Person{ name:'魯班',born:1997}) RETURN k
查詢這個魯班節點與別人之間的關系
MATCH (k : Person{ name:'魯班',born:1997}) -[]-() RETURN k
然爾 並沒有任何關系
2、一次創建多個節點
CREATE (:pig{name:"豬爺爺",age:6}),
(:pig{name:"豬奶奶",age:4}),
(:pig{name:"豬爸爸",age:3}),
(:pig{name:"豬媽媽",age:1})
參數解釋:
可以去掉冒號右邊的變量。多個節點之間用逗號隔開
2、基於現有節點 創建一個關系
MATCH (gf:pig{name:"豬爺爺"})
MATCH (gm:pig{name:"豬奶奶"})
CREATE (gf)-[r:夫妻]->(gm)
RETURN gf,r,gm
參數解釋:
這里沒有逗號連接,先查詢出來,放到變量里面,在進行創建連接
(變量名)-[變量名:聯系名{這里是聯系的屬性}]->(變量名)
3、創建 節點 + 關系
CREATE (:pig{name:"豬爸爸",age:12})-[:夫妻]->(:pig{name:"豬媽媽",age:9})
解釋:
直接創建 節點 關系 節點。
三、修改語句
1、修改屬性
MATCH (a:pig{name:"豬爸爸",age:12})
SET a.age=5
return a
參數解釋:
SET :修改關鍵字。
變量.對象屬性 = 更變的值。
四、刪除語句 先刪關系在刪節點。
MATCH (n:pig{name:"佩奇"})-[r]-()
WHERE n.age=0.6
DELETE r,n
參數解釋:
[] : 任意節點
() : 任意節點
r : 對應關系