创建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
UNION或UNION 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