Cypher简介
Cypher作为Neo4j的查询语言,其语法针对图的特点而设计,非常方便、可读。
CREATE命令
CREATE命令用于创建带有属性的节点。 它创建一个具有一些属性(键值对)的节点来存储数据。
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
Match命令
Match命令用于从数据库获取有关节点和属性的数据(类似于SQL中的Select)。
MATCH (dept:Dept)
SET子句
SET子句的作用是向现有节点或关系添加新属性、添加或更新属性值。(类似于关系型数据库中的update。)
Match (n:Person {id:'baba'}) set n.name='张三',n.age=50 return n
DELETE删除
通过使用DELETE命令,我们可以从数据库永久删除节点及其关联的属性。
MATCH (s:Teacher)-[r:teach]->(d:Student) delete r,s,d //删除与该关系相关的老师和学生及label
Match (a:Person),(b:Person) where a.id='erzi' and b.id='bozi' merge (a)-[r:FUQI]->(b) DELETE r //删除一个relation
REMOVE删除
我们可以使用 REMOVE语法从数据库中永久删除标签、节点或关系的属性或属性列表。
它的使用方法与DELETE类似,这里仅展示示例:
Match (n:Person {id:'baba'}) remove n.age return n //删除属性
LIMIT和SKIP子句
Limit 子句,显示多少行,最前边开始:
MATCH (n:Person) RETURN n LIMIT 25
Skip子句,跳过前多少行:
MATCH (n:Person) RETURN n order by n.id desc skip 2 LIMIT 25
Sorting排序
排序语法同SQL相同,这里仅展示示例:
MATCH (n:Person) RETURN n order by n.id,n.name desc //根据id和name进行倒序排列
MATCH (n:Person) RETURN n order by n.id LIMIT 25 //正序排列
IN操作符
与SQL一样,Neo4j CQL提供了一个IN运算符,以便为CQL命令提供值的集合。
MATCH (n:Person) where n.age>20 RETURN n.id,n.age
union all
MATCH (n:Person) where n.id in ['erzi','bozi','baba'] RETURN n.id,n.age
NULL值
当有数据为null的时候,Cypher和SQL一样,也可以通过is null / is not null 进行数据过滤。
MATCH (n:Person) where n.age>20 RETURN n.id,n.age
union all
MATCH (n:Person) where n.id='erzi' and n.age is not null RETURN n.id,n.age
UNION联盟
与SQL一样,Neo4j CQL有两个子句,将两个不同的结果合并成一组结果:
1.UNION
2.UNION ALL
Union:把多段Match的return结果 上线组合成一个结果集,会自动去掉重复行。
Union all:作用同union,但不去重。
MATCH (n:Person) where n.age>20 RETURN n.id,n.age
union all
MATCH (n:Person) where n.id='erzi' RETURN n.id,n.age