02-Neo4j-CQL:
1、CQL简介
CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
Neo4j CQL
- 它是Neo4j图形数据库的查询语言。
- 它是一种声明性模式匹配语言
- 它遵循SQL语法。
- 它的语法是非常简单且人性化、可读的格式。
CQL命令
S.No. | CQL命令/条 | 用法 |
---|---|---|
1。 | CREATE 创建 | 创建节点,关系和属性 |
2。 | MATCH 匹配 | 检索有关节点,关系和属性数据 |
3。 | RETURN 返回 | 返回查询结果 |
4。 | WHERE 哪里 | 提供条件过滤检索数据 |
5。 | DELETE 删除 | 删除节点和关系 |
6。 | REMOVE 移除 | 删除节点和关系的属性 |
7。 | ORDER BY以…排序 | 排序检索数据 |
8。 | SET 组 | 添加或更新标签 |
CQL函数
S.No. | 定制列表功能 | 用法 |
---|---|---|
1。 | String 字符串 | 它们用于使用String字面量。 |
2。 | Aggregation 聚合 | 它们用于对CQL查询结果执行一些聚合操作。 |
3。 | Relationship 关系 | 他们用于获取关系的细节,如startnode,endnode等。 |
CQL数据类型
这些数据类型与Java语言类似。 它们用于定义节点或关系的属性
Neo4j CQL支持以下数据类型:
S.No. | CQL数据类型 | 用法 |
---|---|---|
1. | boolean | 用于表示布尔文字:true,false。 |
2. | byte | 用于表示8位整数。 |
3. | short | 用于表示16位整数。 |
4. | int | 用于表示32位整数。 |
5. | long | 用于表示64位整数。 |
6. | float | I用于表示32位浮点数。 |
7. | double | 用于表示64位浮点数。 |
8. | char | 用于表示16位字符。 |
9. | String | 用于表示字符串。 |
Create命令:
1、创建无属性节点
CREATE (<node-name>:<label-name>)
语法元素 | 描述 |
---|---|
CREATE | 它是一个Neo4j CQL命令。 |
它是我们要创建的节点名称。 | |
它是一个节点标签名称,别名 |
CREATE (emp:Employee)
在数据库中创建一个标签名“Employee”的节点“emp”
CREATE (dept:Dept)
在数据库中创建一个标签名“Dept”的节点“dept”
2、创建有属性节点
创建一个具有一些属性(键值对)的节点来存储数据
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
语法说明:
语法元素 | 描述 |
---|---|
它是我们将要创建的节点名称。 | |
它是一个节点标签名称 | |
… | 属性是键值对。 定义将分配给创建节点的属性的名称 |
… | 属性是键值对。 定义将分配给创建节点的属性的值 |
CREATE (dept:Dept { deptno:10,dname:“Accounting”,location:“Hyderabad” })
CREATE (emp:Employee{id:123,name:“Lokesh”,sal:35000,deptno:10})
2、MATCH
MATCH 命令用于
- 从数据库获取有关节点和属性的数据
- 从数据库获取有关节点,关系和属性的数据
MATCH 命令语法:
MATCH
(
<node-name>:<label-name>
)
语法元素 | 描述 |
---|---|
这是我们要创建一个节点名称。 | |
这是一个节点的标签名称 |
match需要结合return一起使用
# 查询Dept下的内容
MATCH (dept:Dept) return dept
#查询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
3、REUTRN&&MATCH
RETURN子句用于 -
-
检索节点的某些属性
-
检索节点的所有属性
-
检索节点和关联关系的某些属性
-
检索节点和关联关系的所有属性
-
RETURN <node-name>.<property1-name>, ........ <node-name>.<propertyn-name>
语法说明:
语法元素 描述 它是我们将要创建的节点名称。 … 属性是键值对。 定义要分配给创建节点的属性的名称
4、CREATE&&MATCH&&RETURN
例:本例演示如何使用属性和这两个节点之间的关系创建两个节点。
**注-**我们将创建两个节点:客户节点 (Customer) 和信用卡节点 (CreditCard)。
- 客户节点包含:ID,姓名,出生日期属性
- CreditCard节点包含:id,number,cvv,expiredate属性
- 客户与信用卡关系:DO_SHOPPING_WITH
- CreditCard到客户关系:ASSOCIATED_WITH
- 以下步骤中处理此示例:
- 创建客户节点
- 创建CreditCard节点
- 观察先前创建的两个节点:Customer和CreditCard
- 创建客户和CreditCard节点之间的关系
- 查看新创建的关系详细信息
- 详细查看每个节点和关系属性
创建客户节点
CREATE (e:Customer{id:"1001",name:"Abc",dob:"01/10/1982"})
- e是节点名称
- 在这里Customer是节点标签名称
- id,name和dob是Customer节点的属性名称
创建CreditCard节点
CREATE (cc:CreditCard{id:"5001",number:"1234567890",cvv:"888",expiredate:"20/17"})
这里c是一个节点名
这里CreditCard是节点标签名称
id,number,cvv和expiredate是CreditCard节点的属性名称
关系基础
根据属性图模型,关系应该是定向的。 否则,Neo4j将抛出一个错误消息。
基于方向性,Neo4j关系被分为两种类型。
- 单向关系
- 双向关系
在以下场景中,我们可以使用Neo4j CQL CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。
- 在两个现有节点之间创建无属性的关系
- 在两个现有节点之间创建有属性的关系
- 在两个新节点之间创建无属性的关系
- 在两个新节点之间创建有属性的关系
- 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系