CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
目录
一、关键提要
1、CQL命令表
CQL命令 | 用法 | |
---|---|---|
CREATE 创建 | 创建节点,标签,关系和属性 | 节点: 关系:
|
MATCH 匹配 | 检索有关节点,关系和属性数据 | |
RETURN 返回 | 返回查询结果 | |
WHERE | 提供条件过滤检索数据 | 简单WHERE子句语法 复杂 <condition>语法
|
DELETE 删除 | 删除节点和关系 | 不能单独使用,与match合用 |
REMOVE 移除 | 删除节点和关系的属性 | 不能单独使用,与match合用 |
ORDER BY 排序 | 排序检索数据 | |
SET 子句 | 向现有节点或关系添加新属性 |
|
2、CQL函数表
函数名 | 用法 |
---|---|
String 字符串 | 它们用于使用String |
Aggregation 聚合 | 对CQL查询结果执行一些聚合操作 |
Relationship 关系 | 获取关系的细节,如startnode,endnode等 |
3、CQL数据类型表
CQL数据类型 | 用法 |
---|---|
boolean | 布尔型:true,false |
byte | 8位整数 |
short | 16位整数 |
int | 32位整数 |
long | 64位整数 |
float | 32位浮点数 |
double | 64位浮点数 |
char | 16位字符 |
String | 字符串 |
4、CQL运算符表
布尔运算符 | 描述 |
AND | 与 |
OR | 或 |
NOT | 非 |
XOR | 异或 |
比较运算符 | 描述 |
= | 等于 |
<> | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
二、CQL命令
1、用例
CREATE
创建节点
添加一个dept节点,标签为Dept,对应内部键值对为 deptno:10等{ }中所示内容。(多个标签的话dept:Dept1:Dept2:。。。)
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
(1)输入语句并执行
(2)运行之后结果为下图所示,
创建关系:
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
p1和profile1是节点名称和节点标签名称“From Node”
p1和profile1是节点名称和节点标签名称“To Node”
r1是关系名称
LIKES是一个关系标签名称
MATCH和RETURN匹配和返回
!!!MATCH和RETURN命令不能单独使用。
(1)MATCH
MATCH (dept:Dept)
dept是节点名称,Dept是标签名称。
(2)RETURN
RETURN dept.deptno
其中,dept是节点名称
deptno是dept节点的属性名称
(3)MATCH和RETURN的匹配和返回
检索节点的某些属性
检索节点的所有属性
检索节点和关联关系的某些属性
检索节点和关联关系的所有属性
MATCH(dept:Dept) RETURN dept.deptno,dept.dname
其中,dept是节点名称,Dept是节点的标签名
dept.deptno是节点的属性名,dept.dname是dept节点的属性名
或执行下面语句直接返回节点
MATCH(dept:Dept) RETURN dept
执行结果为:
其中有id,标签,属性和属性值
CREATE+MATCH+RETURN命令(关系)
使用属性和这两个节点之间的关系创建两个节点fds。
目标:
创建两个节点,创建客户id,name,dob属性
- 客户节点包含:ID,姓名,出生日期属性
- CreditCard节点包含:id,number,cvv,expiredate属性
- 客户与信用卡关系:DO_SHOPPING_WITH
- CreditCard到客户关系:ASSOCIATED_WITH
步骤:
(1)创建客户节点
CREATE (e:Customer{id:"1001",name:"Abc",dob:"01/10/1982"})
e是节点名称,Customer是标签名称
结果:
(2)创建CreditCard节点
CREATE (cc:CreditCard{id:"5001",number:"1234567890",cvv:"888",expiredate:"20/17"})
cc是节点名,CreditCard是节点标签名称 。
结果:
(3)观察先前创建的两个节点:Customer和CreditCard
MATCH (e:Customer) RETURN e.id,e.name,e.dob
结果:
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.cvv,cc.expiredate
(4)创建客户和CreditCard节点之间的关系
(5)查看新创建的关系详细信息
(6)详细查看每个节点和关系属性
详细:
https://www.w3cschool.cn/neo4j/neo4j_cql_create_match_return.html
WHERE子句
查找
首先先创建这么一个节点,方便后面找(练习create创建节点的使用)
create (emp:Employee{empid:1001,name:'Abc',salary:25000,deptno:10})
create (emp:Employee{empid:1002,name:'Pqr',salary:45000,deptno:20})
create (emp:Employee{empid:1003,name:'Mno',salary:5000,deptno:10})
create (emp:Employee{empid:1004,name:'Xyz',salary:15000,deptno:30})
键入以下命令,并查看结果
MATCH (emp:Employee) RETURN emp.empid,emp.emp.name,emp.salary,emp.deptno
结果如图
使用WHERE子句
MATCH (emp:Employee) WHERE emp.name = 'Abc' RETURN emp
结果
创建关系
查看是否需要所需节点,没有的话创建
match (cust:Customer) return cust.id,cust.name,cust.dob
同理,查看CreditCard节点
match (cc:CreditCard) return cc.id,cc.number,cc.expiredate,cc.cvv
创建客户和CreditCard节点之间的关系
match (cust:Customer),(cc:CreditCard) where cust.id = '1001' and cc.id = '5001' create (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2019",price:55000}]->(cc) return r
结果:
参考
https://www.w3cschool.cn/neo4j/neo4j_cql_where_clause.html
DELETE删除——对节点和节点关系的操作
规则
DELETE <node1-name>,<node2-name>,<relationship-name>
<node1-name>:用于创建关系<relationship-name>的一个结束节点名称
<node2-name>:用于创建关系<relationship-name>的另一个结束节点名称
<relationship-name>:关系名称,在<node1-name>和<node2-name>之间创建
实例1——删除节点
查看节点
MATCH (emp:Employee) RETURN emp
结果:
删除节点
MATCH (emp:Employee) DELETE emp
结果:
再次查看节点时,已经没有了
实例2——删除关系及其节点
MATCH (cc:CreditCard)-[r]-(c:Customer)RETURN r
删除关系
match (cc:CreditCard)-[rel]-(c:Customer) delete cc,c,rel
删除完成
再查看,没了
REMOVE删除——对属性和属性值的操作
有时我们需要对现有节点的属性和属性值进行操作。
REMOVE <property-name-list>
<property-name-list> :属性列表,用于永久性地从节点或关系中删除它
其语法为:
<node-name>.<property1-name>,
<node-name>.<property2-name>,
....
<node-name>.<propertyn-name>
实例
在浏览器上键入以下命令,创建节点
create (book:Book{id:122,title:"Neo4j Tutorial",pages:340,price:250})
删除其中的price属性
match (book:Book) remove book.price return book
match (book{id:122}) remove book.price return book
两条语句效果相同
关系查找
SET子句
SET <property-name-list>
<property-name-list> 属性列表,用于执行添加或更新操作以满足我们的要求。
<node-label-name>.<property1-name>,
<node-label-name>.<property2-name>,
....
<node-label-name>.<propertyn-name>
实例
新建一个节点
create (test:Test) return test
向这个节点添加如下属性
match (test:Test) set test.name = 'test_name' return test
成功添加如下属性,结果如图所示:
三、命令
创建具有带属性(name,age)的people节点
create (p:People{name:"Alex", age:20});
create (p:People{name:"Tom", age:22});
匹配People节点,并返回其name和age属性
match (p:People) return p.name, p.age
匹配所有age为20的people节点
match (p:People{age:20}) return p
创建Alex和Tom之间的单向friend关系
create(:People{name:"Alex",age:20})-[r:Friends]->(:People{name:"Tom",age:22})
match p = ()-[r:RELATION]->() return p LIMIT 25
匹配所有节点并查看其中25个
match (n) return n LIMIT 25;
简单粗暴删除所有节点及节点相关关系
mathc (n) detach delete n