1、基本命令
1.1、创建
1.1.1、创建节点
#emp是名称,可以不写,Employee表示节点标签CREATE (emp:Employee)# 创建后可以返回CREATE (dept:Dept)return dept# 创建标签为Dept的节点,并为其设置属性CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
CREATE (m:Movie:Cinema:Film:Picture)
不存在才创建
MERGE=CREATE+MATCH
如果我们观察上面的查询结果,它只显示一行,因为CQL MERGE命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。
MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})
1.1.2、创建关系
MATCH (e:Customer),(cc:CreditCard)CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
MATCH (cust:Customer),(cc:CreditCard)CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)RETURN r
CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)return like
CREATE (video1:YoutubeVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"})-[movie:ACTION_MOVIES{rating:1}]->(video2:YoutubeVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})
1.1.3、创建索引
CREATE INDEX ON :Customer (name)
1.1.4、创建UNIQUE约束
CREATE CONSTRAINT ON (cc:CreditCard)ASSERT cc.number IS UNIQUE
1.2、删除
1.2.1、删除节点和关系
MATCH (e: Employee) DELETE e
MATCH (cc: CreditCard)-[rel]-(c:Customer)DELETE cc,c,rel# 删除所有关系MATCH p=()-->() DELETE pMATCH p=()-[]->() DELETE p
1.2.2、删除节点/关系的属性
MATCH (book { id:122 })REMOVE book.priceRETURN book
1.2.3、删除节点/关系的标签
MATCH (m:Movie)REMOVE m:Picture
1.2.4、删除索引
DROP INDEX ON :Customer (name)
1.2.5、删除UNIQUE约束
DROP CONSTRAINT ON (cc:CreditCard)ASSERT cc.number IS UNIQUE
1.3、修改
1.3.1、添加或更新属性值
MATCH (book:Book)SET book.title = 'superstar'RETURN book
1.4、查询
MATCH 查询不能单独使用,配和return,表示返回
#查询所有节点MATCH (n) return n# 查询Dept下的内容MATCH (dept:Dept) return dept
1.4.1、条件查询
# 查询Employee标签下 id=123,name="Lokesh"的节点MATCH (p:Employee {id:123,name:"Lokesh"}) RETURN p# 查询Employee标签下name="Lokesh"的节点,使用(where命令)MATCH (p:Employee)WHERE p.name = "Lokesh"RETURN p# 查询Employee标签下name="Lokesh"和id=123的节点,使用(where命令)MATCH (p:Employee)WHERE p.name = "Lokesh" AND p.id=123RETURN p
支持:AND、OR、NOT、XOR,=、 <>、 >、 <、 >=、 <=;
1.4.2、排序
# 默认升序MATCH (emp:Employee)RETURN emp.empid,emp.name,emp.salary,emp.deptnoORDER BY emp.name# 降序MATCH (emp:Employee)RETURN emp.empid,emp.name,emp.salary,emp.deptnoORDER BY emp.name DESC
1.4.3、合并
结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。
MATCH (cc:CreditCard) RETURN cc.id,cc.numberUNIONMATCH (dc:DebitCard) RETURN dc.id,dc.number
MATCH (cc:CreditCard)RETURN cc.id as id,cc.number as number,cc.name as name,cc.valid_from as valid_from,cc.valid_to as valid_toUNION ALLMATCH (dc:DebitCard)RETURN dc.id as id,dc.number as number,dc.name as name,dc.valid_from as valid_from,dc.valid_to as valid_to
1.4.4、分页
MATCH (emp:Employee)RETURN empLIMIT 2MATCH (emp:Employee)RETURN empSKIP 2MATCH (n) RETURN n SKIP 2 LIMIT 2
1.4.5、判空
MATCH (e:Employee)WHERE e.id IS NOT NULLRETURN e.id,e.name,e.sal,e.deptnoMATCH (e:Employee)WHERE e.id IS NULLRETURN e.id,e.name,e.sal,e.deptno
1.4.6、IN范围查询
MATCH (e:Employee)WHERE e.id IN [123,124]RETURN e.id,e.name,e.sal,e.deptno
2、CQL函数
2.1、字符串函数
2.1.1、转大写
MATCH (e:Employee)RETURN e.id,UPPER(e.name),e.sal,e.deptno
2.1.2、转小写
MATCH (e:Employee)RETURN e.id,LOWER(e.name),e.sal,e.deptno
2.1.3、截取字符串
MATCH (e:Employee)RETURN e.id,SUBSTRING(e.name,0,2),e.sal,e.deptno
2.2、聚合
2.2.1、计数
MATCH (e:Employee) RETURN COUNT(*)
2.2.2、最大/小值
MATCH (e:Employee)RETURN MAX(e.sal),MIN(e.sal)
2.2.3、求和/平均值
MATCH (e:Employee)RETURN SUM(e.sal),AVG(e.sal)
2.3、关系函数
2.3.1、开始/结束节点
# 关系的开始节点。MATCH (a)-[movie:ACTION_MOVIES]->(b)RETURN STARTNODE(movie)# 关系的结束节点。MATCH (a)-[movie:ACTION_MOVIES]->(b)RETURN ENDNODE(movie)
2.3.2、打印ID和关系类
MATCH (a)-[movie:ACTION_MOVIES]->(b)RETURN ID(movie),TYPE(movie)
