Neo4j(五)——CQL命令(20200213)

CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。

目录

一、关键提要

1、CQL命令表

2、CQL函数表

3、CQL数据类型表

4、CQL运算符表

二、CQL命令 

1、用例

CREATE

MATCH和RETURN匹配和返回

CREATE+MATCH+RETURN命令(关系)

WHERE子句

DELETE删除——对节点和节点关系的操作

REMOVE删除——对属性和属性值的操作

关系查找

SET子句

三、命令


 

 

一、关键提要

1、CQL命令表

CQL命令用法 
CREATE 创建创建节点,标签,关系和属性   

节点: 

CREATE (
   <node-name>:<label-name>
   { 	
      <Property1-name>:<Property1-Value>
      ........
      <Propertyn-name>:<Propertyn-Value>
   }
)

关系:

CREATE (<node1-name>:<label1-name>)-
	[(<relationship-name>:<relationship-label-name>)]
	->(<node2-name>:<label2-name>)

 

MATCH 匹配检索有关节点,关系和属性数据
MATCH 
(
   <node-name>:<label-name>
)
RETURN 返回返回查询结果 
WHERE提供条件过滤检索数据

简单WHERE子句语法  


WHERE <condition> 

复杂

WHERE <condition> <boolean-operator> <condition> 

<condition>语法 
 

<property-name> <comparison-operator> <value> 

 

DELETE 删除

删除节点和关系

DELETE <node-name-list>

不能单独使用,与match合用

REMOVE 移除删除节点和关系的属性
REMOVE <property-name-list>

不能单独使用,与match合用

ORDER BY 排序排序检索数据 
SET 子句向现有节点或关系添加新属性
SET <property-name-list>

 

2、CQL函数表

函数名用法
String 字符串它们用于使用String
Aggregation 聚合对CQL查询结果执行一些聚合操作
Relationship 关系获取关系的细节,如startnode,endnode等

3、CQL数据类型表

CQL数据类型用法
boolean布尔型:true,false
byte8位整数
short16位整数

int

32位整数
long64位整数
float32位浮点数
double64位浮点数
char16位字符
String字符串

4、CQL运算符表

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

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值