图数据库neo4j 的 Cypher 查询语言的基本使用

创建node

CREATE (
	[node-name]:[label-name]
)
CREATE (
	[node-name]:[label-name1]:[label-name2].....:[label-namen]
)
CREATE (
	[node-name]:[label-name]{[Property1-name]:[Property1-Value], 
	..., 
	[Propertyn-name]:[Propertyn-Value]}
)

eg:

CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })

创建node关系

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

eg:

CREATE (ee:Eeeeee)-[:EF_EF]-](ff:Ffffff) 
-- -- -- -- -- --- 
MATCH (bb:Bbbbbb),(cc:Bccccc) 
CREATE (bb)-[bc:BC_BC]-](cc) 
RETURN bc

MERGE

[node-name]存在相当于MATCH,不存在相当于CREATE
MERGE ([node-name]:[label-name]
{
   [Property1-name]:[Pro[rty1-Value]
   .....
   [Propertyn-name]:[Propertyn-Value]
})

删除node

DELETE [node1-name],[node2-name],[relationship-name]

eg:

MATCH (e: Employee) DELETE e

MATCH (cc: CreditCard)-[rel]-(c:Customer) DELETE cc,c,rel

移除node的property或label

REMOVE
	[node-name].[property1/label1-name],
	..., 
	[node-name].[propertyn/labeln-name]
REMOVE
	[node-name]:[label1-name],
	..., 
	[node-name]:[labeln-name]

eg:

MATCH (m:Mmmmm) REMOVE m:label

MATCH (m:Mmmmm) REMOVE m.property

修改或添加node的property

SET
	[node-name].[property1-name]=[Property1-Value],
	...,
	[noden-name].[propertyn-name]=[Propertyn-Value]

eg:

MATCH (cc:Cccccc) SET cc.title = 'Hello' RETURN cc

查询

MATCH 
	([node-name1]:[label-name1]),
	 ..., 
	([node-namen]:[label-namen])

WHERE
查询条件

WHERE 
	[condition] [boolean-operator] [condition]

RETURN
返回查询node

RETURN 	
	[node-name].[property1-name], 
	..., 
	[node-namen].[propertyn-name]

eg:

MATCH 
	(emp:Employee) 
WHERE 
	emp.name = 'abc' OR emp.name = 'xyz' 
RETURN 
	emp

MATCH 
	(bb:Bbbbbb),(cc:Cccccc) 
RETURN 
	bb,cc

NULL 的查询

MATCH (ee:Eeeeee) 
WHERE ee.id IS NOT NULL AND ee.name IS NULL
RETURN ee.id,ee.name

IN的使用

MATCH (ee:Eeeeee) 
WHERE ee.id IN [1,2]
RETURN ee.id

ORDER BY 排序
根据property排序

ORDER BY  
	[node-name].[property1-name], ...[node-name].[propertyn-name]   
	[DESC]

eg:

MATCH (emp:Employee) RETURN emp.empid,emp.name ORDER BY emp.name

UNION [ALL] 联合查询

[MATCH Command1]
UNION [ALL]
[MATCH Command2]

eg:

MATCH (cc:Cccccc) RETURN cc.id as id
UNIONUNION ALL
MATCH (dd:Dddddd) RETURN dc.id as id

LIMIT/SKIP
LIMIT [number] 查询数据顶部
SKIP [number] 查询数据底部

字符串匹配

STRATS WITH匹配字符串开头的文本,会区分大小写
ENDS WITH匹配字符串末尾的文本,也是区分大小写的
CONTAINS查找一个文本字符串中是否还有指定的字符串
NOT从结果中排除给定字符串的所有匹配项
=~ ‘regexp’(?i) 不区分大小写;(?s) 多行;(?m) dotall

eg:

MATCH (ee:Eeeeee) WHERE ee.name STARTS WITH 'Pet' RETURN ee.name
MATCH (ee:Eeeeee) WHERE NOT ee.name ENDS WITH 'y' RETURN ee.name
MATCH (ee:Eeeeee) WHERE ee.name =~ 'Tim.*' RETURN ee.name

字符串函数

lTrim([input-string])删除字符串左边多余的空格
rTrim([input-string])删除字符串右边多余的空格
trim([input-string])删除字符串左右两边多余的空格
replace([input-string],[old-string],[new-string])替换字符串
reverse([input-string])将字符串的顺序反过来
left([input-string],[num])从左往右获取字符串
right([input-string],[num])从右往左获取字符串
split([input-string],[split-string])拆分字符串
substring([input-string],[start-index],[num])从字符串中获取某一部分字符串
toLower([input-string])将所有字母转换成小写字母
toUpper([input-string])将所有字母转换成大写字母
toString([input-string])将格式转换成字符串

eg:

MATCH (ee:Eeeeee) RETURN ee.id,SUBSTRING(ee.name,0,2)

聚合函数

COUNT([value])返回行数
MAX([property-name])返回一组行的最大值
MIN([property-name])返回一组行的最小值
SUM([property-name])返回所有行的求和值
AVG([property-name])返回所有行的平均值

eg:

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

关系函数

STARTNODE([relationship-name])返回关系的开始节点
ENDNODE([relationship-name])返回关系的结束节点
ID([relationship-name])返回关系的ID
TYPE([relationship-name])返回字符串表示中的一个关系的TYPE

eg:

MATCH (cc:Cccccc)-[cd:CD_CD]-](dd:Dddddd) RETURN ENDNODE(cd)

索引

CREATE INDEX ON :[label_name] ([property_name])
DROP INDEX ON :[label_name] ([property_name])

eg:

CREATE INDEX ON: aaaaaa(name)

UNIQUE约束

CREATE CONSTRAINT ON 
	([node-name]:[label_name]) 
ASSERT 
	[node-name].[property_name] 
IS UNIQUE
DROP CONSTRAINT ON 
	([node-name]:[label_name]) 
ASSERT 
	[node-name].[property_name] 
IS UNIQUE

eg:

CREATE CONSTRAINT ON (aa:Aaaaaa) ASSERT aa.name IS UNIQUE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值