天行健,君子以自強不息;地勢坤,君子以厚德載物。
每個人都有惰性,但不斷學習是好好生活的根本,共勉!
文章均為學習整理筆記,分享記錄為主,如有錯誤請指正,共同學習進步。
CQL命令實例演示
- 一、縮寫
- 二、Node節點操作
- 1. 創建節點
- 2. 查詢節點
- 2.1 查詢全部節點
- 2.2 查詢指定標簽的節點
- 2.3 查詢指定標簽指定屬性的節點
- 3. 修改節點
- 4. 刪除節點
- 4.1 刪除指定標簽指定屬性的節點
- 4.2 刪除指定標簽節點
- 4.3 刪除全部節點
- 4.4 永久刪除
- 三、Relationship關系操作
- 1. 創建關系
- 2. 查詢關系
- 2.1 查詢所有的關系
- 2.2 條件查詢關系
- 2.3 條件查詢關系-where
- 2.4 查詢指定兩個節點的關系
- 3. 修改關系
- 3.1 批量修改關系信息
- 3.2 修改指定兩個節點的關系
- 3.3 指定開始節點來修改關系信息
- 3.4 指定結束節點來修改關系信息
- 4. 刪除關系
- 4.1 批量刪除指定標簽的所有關系
- 4.2 刪除指定標簽指定屬性為開始節點的所有關系
- 4.3 刪除指定標簽指定屬性為結束節點的所有關系
- 4.5 刪除指定標簽指定屬性的兩個節點的所有關系
- 4.2 刪除指定標簽為開始節點的所有關系
- 4.1 批量刪除所有關系
一、縮寫
n
:node節點
L
:Label標簽
p
:屬性名
v
:屬性值
r
:關系
R
:關系標簽
屬性值為字符串或者數字,其余好像會報錯,目前嘗試這兩個類型不會報錯
文章中的語法的縮寫字母并非固定,可以任意字母更換,但推薦使用對應縮寫,方便理解和記憶。
二、Node節點操作
對node節點的增刪改查操作
1. 創建節點
create新增,語法
create(n:L{p1:v1,p2:v2}) return n
花括號中節點的屬性可以是一個也可以是多個
不定義屬性時屬性值為空,僅有一個id默認屬性
如:創建u節點,標簽為USER,屬性name值為李白,屬性age為28,并返回創建的節點
create(u:USER{name:"李白",age:28}) return u
為了后面的演示,我們這里多創建幾個,依次執行以下命令
//注意,age對應的值都是數字類型create(u:USER{name:"王昭君",age:24})create(u:USER{name:"貂蟬",age:20})create(u:USER{name:"呂布",age:26})//注意,price對應的值都是字符串類型create(c:CAR{name:"奔馳",price:"30"})create(c:CAR{name:"寶馬",price:"29"})create(c:CAR{name:"奧迪",price:"33"})create(c:CAR{name:"比亞迪",price:"25"})
注:這里需要注意,在創建節點時,屬性name的值會顯示在查看時的節點中心,如果屬性名不是name可能不會顯示(不一定),我用userName作為屬性名它是不顯示的,這點需要注意,不過不影響使用,信息都會在節點中,只是看瀏覽器中節點中心沒有名稱了而已
2. 查詢節點
match查詢
2.1 查詢全部節點
語法(括號可以省略)
match(n) return(n)
//或
match(n) return n
在瀏覽器中輸入上述命令查詢所有節點
2.2 查詢指定標簽的節點
語法
match(n:L)
如:查看CAR標簽的所有節點
match(c:CAR)return c
這里只會顯示CAR標簽的節點
2.3 查詢指定標簽指定屬性的節點
語法
match(n:L{p1:v1,p2:v2})
如:查看標簽為CAR屬性名為name值為寶馬的節點
match(c:CAR{name:"奧迪"})
3. 修改節點
set修改,但需要配合match搜索使用,語法
match(n:L{p1:v1,p2:v2})set n.p1=v11,n.p2=v22
如修改標簽為CAR屬性name值為奧迪的節點,將其屬性price的值改為40
match(c:CAR{name:"奧迪"})set c.price=40
不適用return時返回的是一行描述信息
match(c:CAR{name:"奧迪"})set c.price=41 return c
加上return返回的內容就是如數據了,如下
4. 刪除節點
delete刪除,如果節點存在關系,則無法使用delete刪除,此時需要在delete前加上detach
關鍵字強制刪除
(為了不重新創建關系,刪除節點部分是在刪除關系后操作的,屬于整篇文章最后演示的內容)
先查看全部節點
match(n)return n
4.1 刪除指定標簽指定屬性的節點
語法
match(n:L{p1:v1,p2:v2})delete n
如:刪除標簽為CAR屬性name為寶馬的節點
match(c:CAR{name:"寶馬"}) delete c
查看全部節點驗證
match(n)return n
寶馬已被刪除
4.2 刪除指定標簽節點
語法
match(n:L) delete n
如刪除標簽為CAR的所有節點
match(c:CAR) delete c
查看全部節點驗證
match(n)return n
CAR標簽的節點已全被刪除
4.3 刪除全部節點
語法
match(n) delete n
查看全部節點驗證
match(n)return n
所有節點已全被刪除
4.4 永久刪除
如果節點包含關系,則無法直接使用delete刪除,需要使用detach配置delete強制刪除
使用detach可以實現永久刪除數據,語法
match(n) detach delete n
三、Relationship關系操作
我們先多創建兩個USER節點
create(u:USER{name:"亞瑟",age:27})create(u:USER{name:"安其拉",age:22})
再多創建幾個CAR節點
create(c:CAR{name:"小鵬",price:"28"})create(c:CAR{name:"蔚來",price:"24"})create(c:CAR{name:"極氪",price:"30"})create(c:CAR{name:"智己",price:"31"})
1. 創建關系
創建兩個節點之間的關系,并給關系添加屬性信息,添加后返回節點和關系的圖數據結果,語法
match(n1:L1{p1:v1,p2:v2}),(n2:L2{p11:v11}) create(n1)-[r:R{p111:v111}]->(n2) return n1,r,n2
如在標簽為USER屬性name為李白的節點和標簽為CAR屬性name為寶馬的節點之間創建關系
關系標簽為BUY標簽屬性date值為20230728,然后返回創建后的結果
match(u:USER{name:"李白"}),(c:CAR{name:"寶馬"}) create (u)-[r:BUY{date:"20230728"}]->(c) return u,r,c
當然了,也可以將箭頭反過來,創建關系標簽為BELONG屬性expire值為100
match(u:USER{name:"李白"}),(c:CAR{name:"寶馬"}) create (u)<-[r:BELONG{expire:"100"}]-(c) return u,r,c
為了方便后續演示,這里我們多創建幾個關系
match(u:USER{name:"李白"}),(c:CAR{name:"奧迪"}) create (u)-[r:BUY{date:"20230728"}]->(c) return u,r,cmatch(u:USER{name:"李白"}),(c:CAR{name:"奧迪"}) create (u)<-[r:BELONG{expire:"200"}]-(c) return u,r,cmatch(u:USER{name:"亞瑟"}),(c:CAR{name:"比亞迪"})create (u)-[r:BUY{date:"20230729"}]->(c) return u,r,cmatch(u:USER{name:"貂蟬"}),(c:CAR{name:"智己"})create (u)-[r:BUY{date:"20230830"}]->(c) return u,r,cmatch(u:USER{name:"安其拉"}),(c:CAR{name:"小鵬"})create (u)-[r:BUY{date:"20230720"}]->(c) return u,r,cmatch(u:USER{name:"王昭君"}),(c:CAR{name:"極氪"})create (u)-[r:BUY{date:"20230930"}]->(c) return u,r,cmatch(u:USER{name:"呂布"}),(c:CAR{name:"奔馳"})create (u)-[r:BUY{date:"20230930"}]->(c) return u,r,c
2. 查詢關系
同樣的查詢關系也是用match
2.1 查詢所有的關系
語法
match(n1)-[r]->(n2)return n1,r,n2
這里好像有沒有箭頭都可以,>
可省略
如查詢所有節點的關系
match(u)-[r]->(c) return u,r,c
只會查看所有帶關系的數據,不存在關系的數據不在其中
如果return后不加節點只有關系參數r,則返回的是json格式的數據信息
match(u)-[r]->(c) return r
2.2 條件查詢關系
查詢n1節點屬性p1、p2對應的所有關系,語法
match(n1:L1{p1:v1,p2:v2})-[r]->(n2) return n1,r,n2
如:查看USER標簽的屬性name為李白的節點的所有關系
match(u:USER{name:"李白"})-[r]->(c)return u,r,c
2.3 條件查詢關系-where
使用where子句查詢屬性p1值為v1屬性p2值為v2的n1節點的所有關系
match(n1)-[r]->(n2) where n1.p1=v1 and n1.p2=v2 return n1,r,n2
如:查看USER標簽的屬性name為李白的節點的所有關系
match(u)-[r]-(c) where u.name="李白" return u,r,c
2.4 查詢指定兩個節點的關系
語法
match(n1:L1{p1:v1})-[r]->(n2:L2{p2:v2})return n1,r,n2
如查看USER標簽的屬性name為李白的節點和CAR標簽屬性name為寶馬的所有關系
match(u:USER{name:"李白"})-[r]->(c:CAR{name:"寶馬"})return u,r,c
或者(where子句查詢)
match(u)-[r]-(c) where u.name="李白" and c.name="寶馬" return u,r,c
3. 修改關系
3.1 批量修改關系信息
修改指定關系標簽的指定屬性信息
將標簽為R的所有關系屬性pr1改為vr1,并返回修改后的圖數據,語法
match(n1)-[r]-(n2) set r.pr1 = vr1 return n1,r,n2
//或
match(n1)-[r:R]-(n2) set r.pr1 = vr1 return n1,r,n2
如:將所有關系標簽為BELONG的屬性expire的值改為200
match(u)-[r:BELONG]-(c) set r.expire=200 return u,r,c
我們可以看到只有李白有BELONG關系,且這兩個關系的屬性expire都改為了200
3.2 修改指定兩個節點的關系
修改兩個指定節點的指定關系標簽的關系屬性信息,語法
match(n1:L1{p1:v1})-[r]->(n2:L2{p2:v2}) set r.pr1=vr1 return n1,r,n2
//或
match(n1:L1{p1:v1})-[r:R]->(n2:L2{p2:v2}) set r.pr1=vr1 return n1,r,n2
如:修改李白和奧迪兩個節點的BUY關系的屬性,將date的值改為20230808
match(u:USER{name:"李白"})-[r:BUY]->(c:CAR{name:"奧迪"}) set r.date="20230808" return u,r,c
3.3 指定開始節點來修改關系信息
match(n1:L1{p1:v1})-[r:R]->(n2) set r.pr1=vr1 return n1,r,n2
如:指定李白為開始節點,根據開始節點修改李白對應的BUY標簽關系的信息,將date屬性值都改為20230909
match(u:USER{name:"李白"})-[r:BUY]->(c) set r.date="20230909" return u,r,c
3.4 指定結束節點來修改關系信息
箭頭可指向右側也可指向左側
match(n1:L1{p1:v1})<-[r:R]-(n2) set r.pr1=vr1 return n1,r,n2
如:指定李白為結束節點,根據結束節點修改李白對應的BELONG標簽關系的信息,將expire屬性值都改為500
match(u:USER{name:"李白"})<-[r:BELONG]-(c) set r.expire="500" return u,r,c
4. 刪除關系
4.1 批量刪除指定標簽的所有關系
語法
match(n1)-[r:R]->(n2) delete r
如:刪除BELONG標簽的所有關系
match(u)-[r:BELONG]->(c) delete r
查看所有關系,看是否被刪除
match(u)-[r]->(c)return u,r,c
的確刪除了
4.2 刪除指定標簽指定屬性為開始節點的所有關系
語法
match(n1:L1{p1:v1})-[r]->(n2) delete r
如:刪除以李白為開始節點的所有關系
match(u:USER{name:"李白"})-[r]->(c) delete r
查看所有關系,看是否被刪除
match(u)-[r]->(c)return u,r,c
沒有看到李白的節點,表示已經沒有存在的關系了
4.3 刪除指定標簽指定屬性為結束節點的所有關系
語法
match(n1:L1{p1:v1})<-[r]-(n2) delete r
如:刪除以比亞迪為結束節點的所有關系
match(c:CAR{name:"比亞迪"})<-[r]-(u) delete r
查看所有關系,看是否被刪除
match(u)-[r]->(c)return u,r,c
已經沒有了比亞迪節點的關系
4.5 刪除指定標簽指定屬性的兩個節點的所有關系
語法
match(n1:L1{p1:v1})-[r]-(n2:L2{p2:v2}) delete r
如:刪除安其拉到小鵬之間的關系
match(u:USER{name:"安其拉"})-[r]->(c:CAR{name:"小鵬"}) delete r
查看所有關系,看是否被刪除
match(u)-[r]->(c)return u,r,c
安其拉已經無了
4.2 刪除指定標簽為開始節點的所有關系
語法
match(n1:L1)-[r]->(n2) delete r
如:刪除以USER標簽為開始節點的所有關系
match(u:USER)-[r]->(c) delete r
查看所有關系,看是否被刪除
match(u)-[r]->(c)return u,r,c
含有關系的節點已經全部沒了
4.1 批量刪除所有關系
語法
match(n1)-[r]->(n2) delete r
舉例,可直接使用
我這里直接用
match(u)-[r]->(c) delete r
前面已經刪除完了,不演示了。
以上就是CQL命令增刪改查演示內容,感謝閱讀,祝君暴富!