【Neo4j02】CQL命令_關係基礎
關係基礎
Neo4j圖資料庫遵循屬性圖模型來儲存和管理其資料。
根據屬性圖模型,關係應該是定向的。 否則,Neo4j將丟擲一個錯誤訊息。
基於方向性,Neo4j關係被分為兩種主要型別。
1.單向關係 2.雙向關係
在以下場景中,我們使用CREATE命令來建立兩個節點之間的關係。這些情況同時適用於單向和雙向關係。
1.在兩個現有節點之間建立無屬性的關係
2.在兩個現有節點之間建立與屬性的關係
3.在兩個新節點之間建立無屬性的關係
4.在兩個新節點之間建立與屬性的關係
5.在具有WHERE子句的兩個退出節點之間建立/不使用屬性的關係
如圖在Customer和CreditCard的關係中:
Customer是從節點(From Node),CreditCard是到節點(To Node)。
對於Customer,Relationship是外向關係;對於CreditCard,Relationship是到達關係。
而對於一個雙向關係,等同於在Customer和Creditcard節點之間建立了兩個關係:
對現有節點建立沒有屬性的關係
語法
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>) RETURN <relationship-label-name>
在此語法中,RETURN子句是可選的,當想要立即看到結果,可以使用他。
例如我們建立標籤名為XuHuan的x節點,和標籤名為FengWeiheng的f節點: 通過以下命令建立x節點和f節點之間的關係IS_HIS_FATHER: Graph形式下關係如下,可以通過單擊節點和關係檢視他們的屬性。
對現有節點建立有屬性的關係
語法
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name> {<define-properties-list>}]->(<node2-label-name>) RETURN <relationship-label-name>
例如我們對現有的標籤名為FengWeiheng的節點f和標籤名為ZangRuiqing的節點f建立關係IS_HIS_SISTER: Graph形式下關係如下,可以點選關係檢視關係的屬性。
對新節點建立無屬性關係
語法
CREATE
(<node1-label-name>:<node1-name>)-
[<relationship-label-name>:<relationship-name>]->
(<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>
例如我們建立標籤名為ZhengJuntai的節點j和標籤名為HeShi的節點h建立關係IS_HIS_PET: Graph形式下關係如下:
對新節點和現有節點建立有屬性的關係
對標籤名為XiaoBowen的新節點和現有節點標籤名為x的XuHuan建立有屬性的關係IS_HIS_GRANDSON: 經過一番折騰,博主終於將他和他的朋友們的家譜建立好啦!
檢索關係節點的詳細資訊
語法
MATCH
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
例如我們檢索關係為IS_HIS_GRANDSON的兩個節點,並返回他們: