继续讲解Cypher语句的语法
WHERE 子句
简单WHERE子句语法:
WHERE <condition>
较为复杂的WHERE子句:
WHERE <condition> <boolean-operator> <condition>
这里注意,这里是CQL中的布尔运算符。
Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。
符号 | 描述 |
---|---|
OR | 或关系 |
AND | 与关系 |
NOT | 非关系 |
XOR | 异或关系 |
这里与其他语言或数据库的布尔运算符类似,大家进行比较学习,总结归纳就行了。
Neo4j CQL中的比较运算符
Neo4j 支持以下的比较运算符,在 Neo4j CQL WHERE 子句中使用来支持条件。
符号 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
condition的语法:
<property-name> <comparison-operator> <value>
示例:
此示例演示如何在MATCH Command中使用CQL WHERE子句根据员工名称检索员工详细信息。
先创建一些节点:
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
CREATE (emp1:Employee{id:123,name:"Lokesh",sal:35000,deptno:10})
CREATE (emp2:Employee{id:124,name:"sqwe",sal:36000,deptno:20})
CREATE (emp3:Employee{id:125,name:"qwer",sal:37000,deptno:30})
CREATE (emp4:Employee{id:126,name:"asdf",sal:38000,deptno:40})
进行查询:
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
结果:
进行where条件查询:
MATCH (emp:Employee)
WHERE emp.name = 'asdf'
RETURN emp
得到名字是asdf的员工的信息:
使用布尔运算的查询:
MATCH (emp:Employee)
WHERE emp.name = 'asdf' OR emp.name = 'sqwe'
RETURN emp
返回的是两个员工的信息:
DELETE子句
删除所有节点与关系:
代码如下:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
删除一个节点:
先查询这个节点,确认这个节点的存在:
MATCH (dept:Dept) RETURN dept
再执行以下命令:
MATCH(dept:Dept) DELETE dept
得到:
删除关系:
知道关系名称就行了。
MATCH( )-[ relationship_name:relationship_label]-( )
DELETE <relationship_name>
总结心得:
- DELETE 删除节点和关系,都只需要知道名称就行,即如果关系名为qwe,执行DELETE qwe 就可以删除关系了。
- 关键字不区分大小写,delete和DELETE是一样的用法
- 想要删除或者创建关系或者节点,如果是创建关系,就必须用match先找到已有节点,如果是新节点,就使用create()-[]-()一次性创建两个节点和关系,总的说,如果是存在的节点,就必须先匹配到这个存在的节点,即使用match语句。
- CREATE、DELETE、RETRUN 、WHERE等都经常会和MATCH一起使用,请重视!!
重要的事情说三遍:
MATCH很重要!
MATCH很重要!
MATCH很重要!