【存储中间件】Neo4J图数据库超详细教程(二):CQL语句(上)CREATE、MATCH、RETURN、WHERE

在这里插入图片描述
个人主页:道友老李
欢迎加入社区:道友老李的学习社区

Neo4J超详细教程

二、CQL语句

1.CQL简介

Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言。像Oracle数据库具有查询
语言SQL,Neo4j具有CQL作为查询语言。

  • 它是Neo4j图形数据库的查询语言。
  • 它是一种声明性模式匹配语言
  • 它遵循SQL语法。
  • 它的语法是非常简单且人性化、可读的格式。

image.png

2.CREATE 命令

Neo4j使用CQL“CREATE”命令

  • 创建没有属性的节点
  • 使用属性创建节点
  • 在没有属性的节点之间创建关系
  • 使用属性创建节点之间的关系
  • 为节点或关系创建单个或多个标签

语法命令

CREATE (<node-name>:<label-name>)

语法说明

image.png

注意事项 -

1、Neo4j数据库服务器使用此<node-name>将此节点详细信息存储在Database.As中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。

2、Neo4j数据库服务器创建一个<label-name>作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。

3.MATCH 命令

Neo4j CQL MATCH 命令用于

  • 从数据库获取有关节点和属性的数据
  • 从数据库获取有关节点,关系和属性的数据

语法格式:

MATCH 
(
   <node-name>:<label-name>
)

语法说明:

image.png

4.RETURN 子句

Neo4j CQL RETURN子句用于 -

  • 检索节点的某些属性
  • 检索节点的所有属性
  • 检索节点和关联关系的某些属性
  • 检索节点和关联关系的所有属性

语法结构

RETURN 
   <node-name>.<property1-name>,
   ........
   <node-name>.<propertyn-name>

语法说明:

image.png

5.MATCH和RETURN

在Neo4j CQL中,我们不能单独使用MATCH或RETURN命令,因此我们应该合并这两个命令以从数据库检索数据。

Neo4j使用CQL MATCH + RETURN命令 -

  • 检索节点的某些属性
  • 检索节点的所有属性
  • 检索节点和关联关系的某些属性
  • 检索节点和关联关系的所有属性

语法结构

MATCH Command
RETURN Command

语法说明

image.png

6.CREATE+MATCH+RETURN命令

先创建一个客户

create (e:Customer {id:"1001",name:"boge",location:"cs"})

image.png

创建一个信用卡节点

create (cc:CreditCard {id:"9999",number:"1234567890",cvv:"888",expiredate:"22/17"})

image.png

然后我们可以查询对应的信息

match (k:customer) return k.name,k.location,k.id

image.png

还可以查询信用卡的信息

match (m:CreditCard) return m.number,m.cvv,m.id,m.expiredate

image.png

7.关系基础

Neo4j图数据库遵循属性图模型来存储和管理其数据。

根据属性图模型,关系应该是定向的。 否则,Neo4j将抛出一个错误消息。

基于方向性,Neo4j关系被分为两种主要类型。

  • 单向关系
  • 双向关系

在以下场景中,我们可以使用Neo4j CQL CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。

  • 在两个现有节点之间创建无属性的关系
  • 在两个现有节点之间创建有属性的关系
  • 在两个新节点之间创建无属性的关系
  • 在两个新节点之间创建有属性的关系
  • 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系

注意 -

我们将创建客户和CreditCard之间的关系,如下所示:

image.png

8.CREATE创建标签

CREATE标签可以创建单个标签或者多个标签

CREATE(node-name:lable-name1:lable-name2)

还有就是可以根据CREATE语句来创建标签之间的关系

CREATE (node1-name:lable1-name) - [relationship-name:relationship-lable-name]->(node2-name:lable2-name)

image.png

案例:

create (p1:Profile1)-[r1:喜欢]->(p2:Profile2)

image.png

9.WHERE子句

像SQL一样,Neo4j CQL在CQL MATCH命令中提供了WHERE子句来过滤MATCH查询的结果。

语法结构

WHERE <condition>

复杂的语法结构

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

Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。

image.png

Neo4j 支持以下的比较运算符,在 Neo4j CQL WHERE 子句中使用来支持条件。

image.png

案例:

match (m:Employee) where m.age > 18 or m.id = 1002  return m

image.png

多个节点关联查询

image.png

where子句也可以创建关系

语法结构

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>) 

image.png

案例

match (c:customer) , (d:CreditCard) where c.id = "1001" and d.id = "9999" create (c)-[r:消费{shopdate:"2022/09/28",price:6000}]->(d) return r

image.png

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道友老李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值