欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【知识图谱】 CQL 语句学习 一

程序员文章站 2022-06-12 17:08:30
...

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}

【知识图谱】 CQL 语句学习 一


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三个属性
【知识图谱】 CQL 语句学习 一

关系:

使用现有节点创建没有属性的关系

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