【知识图谱】 CQL 语句学习 一
Neo4j - CQL简介
Neo4j CQL
-
它是Neo4j图形数据库的查询语言。
-
它是一种声明性模式匹配语言
-
它遵循SQL语法。
-
它的语法是非常简单且人性化、可读的格式。
如Oracle SQL
-
Neo4j CQL 已命令来执行数据库操作。
-
Neo4j CQL 支持多个子句像在哪里,顺序等,以非常简单的方式编写非常复杂的查询。
-
NNeo4j CQL 支持一些功能,如字符串,Aggregation.In 加入他们,它还支持一些关系功能。
常用的Neo4j CQL命令/条款
S.No. | CQL命令/条 | 用法 |
---|---|---|
1。 | CREATE 创建 | 创建节点,关系和属性 |
2。 | MATCH 匹配 | 检索有关节点,关系和属性数据 |
3。 | RETURN 返回 | 返回查询结果 |
4。 | WHERE 哪里 | 提供条件过滤检索数据 |
5。 | DELETE 删除 | 删除节点和关系 |
6。 | REMOVE 移除 | 删除节点和关系的属性 |
7。 | ORDER BY 以…排序 |
排序检索数据 |
8。 | SET 组 | 添加或更新标签 |
常用的Neo4j CQL函数
S.No. | 定制列表功能 | 用法 |
---|---|---|
1。 | String 字符串 | 它们用于使用String字面量。 |
2。 | Aggregation 聚合 | 它们用于对CQL查询结果执行一些聚合操作。 |
3。 | Relationship 关系 | 他们用于获取关系的细节,如startnode,endnode等。 |
与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 | 用于表示字符串。 |
Neo4j CQL中的布尔运算符
Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。
布尔运算符 | 描述 | |
---|---|---|
1 | AND | 它是一个支持AND操作的Neo4j CQL关键字。 |
2 | OR | 它是一个Neo4j CQL关键字来支持OR操作。 |
3 | NOT | 它是一个Neo4j CQL关键字支持NOT操作。 |
4 | XOR | 它是一个支持XOR操作(异或)的Neo4j CQL关键字。 |
Neo4j CQL中的比较运算符
Neo4j 支持以下的比较运算符,在 Neo4j CQL WHERE 子句中使用来支持条件。
S.No. | 布尔运算符 | 描述 |
---|---|---|
1. | = | 它是Neo4j CQL“等于”运算符。 |
2. | <> | 它是一个Neo4j CQL“不等于”运算符。 |
3. | < | 它是一个Neo4j CQL“小于”运算符。 |
4. | > | 它是一个Neo4j CQL“大于”运算符。 |
5. | <= | 它是一个Neo4j CQL“小于或等于”运算符。 |
6. | >= | 它是一个Neo4j CQL“大于或等于”运算符。 |
注意:节点本身是有标签的(Label),关系分成种类(Type),下面的Property Keys则包含了节点和关系的Key值。节点和关系的属性都是使用大括号里包含键值对的方式添加的{key:value}
CREATE:新建节点、关系、标签
创建没有属性的节点:CREATE (节点名称:节点标签名称),例如:CREATE (emp:Employee)。必须加括号
创建带有属性的节点
CREATE (
节点名称:节点标签名称
{
<Property1-name>:<Property1-Value>
........
属性的名称:属性值
}
)
例如:CREATE (test_name:test1_lable {pro_name:"Pro_val"})。注意:属性值必须是Neo4j CQL数据类型。字符串类型要加双引号。
CREATE (A:Employee{empid:1,name:"dd",salary:13000,deptno:12})
注意,不同属性键值对之间要加成逗号而不是分号。
MATCH
MATCH (<node-name>:<label-name>)
获取有关节点和属性,关系和属性的数据,此语句不能单独使用。 匹配关系:
MATCH p=()-[r:DO_SHOPPING_WITH]->() RETURN p
RETURN
RETURN <node-name>.<property1-name>
检索节点的一些属性、所有属性
MATCH+RETURN:
MATCH (dept: Dept)
RETURN dept.deptno,dept.dname,dept.location
RETURN可与不加括号
上述代码是获取Dept 标签的节点的deptno、dname、location三个属性
关系:
MATCH (<node1-name>:<node1-label-name>),(<node2-name>:<node2-label-name>)
CREATE
(<node1-name>)-[<relationship-name>:<relationship-label-name>]->(<node2-name>)
RETURN <relationship-name>
上行RETURN句子可选,若无需返回则慈航可以去掉。下行先匹配再返回关系
MATCH (e)-[r:DO_SHOPPING_WITH ]->(cc)
RETURN r
使用现有节点创建有属性的关系
MATCH (cust:Customer),(cc:CreditCard)
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
新建节点创建没有属性的关系
CREATE
(<node1-name>:<node1-label-name>)-
[<relationship-name>:<relationship-type-name>{<KEY><VALUE>}]->
(<node2-name>:<node1-label-name>)
RETURN <relationship-name>
检索关系节点的详细信息
MATCH (<node1-name>)-[<relationship-name>:<relationship-label-name>]->(<node2-name>)
RETURN <relationship-name>
标签
单个节点可以添加多个标签:
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)
WHERE子句
MATCH命令中提供了WHERE子句来过滤MATCH查询的结果。
简单WHERE子句语法:WHERE <condition>
复杂WHERE子句语法:WHERE <condition> <boolean-operator> <condition>
<condition>语法:<property-name> <comparison-operator> <value>
MATCH (emp:Employee) WHERE emp.salary>=15000 AND emp.salary<20000 RETURN emp.deptno
使用WHERE子句,创建现有的两个符合一定条件的节点之间的关系
MATCH (<node1-name>:<node1-label-name>),(<node2-name>:<node2-label-name>)
WHERE <condition>
CREATE (<node1-name>)-[<relationship-name>:<relationship-label-name>
{<relationship-properties>}]->(<node2-name>)
例如:
MATCH (cust:Customer),(cc:CreditCard)
WHERE cust.id = "1001" AND cc.id= "5001"
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r