文章目录
Neo4J超详细教程
二、CQL语句
1.CQL简介
Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言。像Oracle数据库具有查询
语言SQL,Neo4j具有CQL作为查询语言。
- 它是Neo4j图形数据库的查询语言。
- 它是一种声明性模式匹配语言
- 它遵循SQL语法。
- 它的语法是非常简单且人性化、可读的格式。
2.CREATE 命令
Neo4j使用CQL“CREATE”命令
- 创建没有属性的节点
- 使用属性创建节点
- 在没有属性的节点之间创建关系
- 使用属性创建节点之间的关系
- 为节点或关系创建单个或多个标签
语法命令
CREATE (<node-name>:<label-name>)
语法说明
注意事项 -
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>
)
语法说明:
4.RETURN 子句
Neo4j CQL RETURN子句用于 -
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
语法结构
RETURN
<node-name>.<property1-name>,
........
<node-name>.<propertyn-name>
语法说明:
5.MATCH和RETURN
在Neo4j CQL中,我们不能单独使用MATCH或RETURN命令,因此我们应该合并这两个命令以从数据库检索数据。
Neo4j使用CQL MATCH + RETURN命令 -
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
语法结构
MATCH Command
RETURN Command
语法说明
6.CREATE+MATCH+RETURN命令
先创建一个客户
create (e:Customer {id:"1001",name:"boge",location:"cs"})
创建一个信用卡节点
create (cc:CreditCard {id:"9999",number:"1234567890",cvv:"888",expiredate:"22/17"})
然后我们可以查询对应的信息
match (k:customer) return k.name,k.location,k.id
还可以查询信用卡的信息
match (m:CreditCard) return m.number,m.cvv,m.id,m.expiredate
7.关系基础
Neo4j图数据库遵循属性图模型来存储和管理其数据。
根据属性图模型,关系应该是定向的。 否则,Neo4j将抛出一个错误消息。
基于方向性,Neo4j关系被分为两种主要类型。
- 单向关系
- 双向关系
在以下场景中,我们可以使用Neo4j CQL CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。
- 在两个现有节点之间创建无属性的关系
- 在两个现有节点之间创建有属性的关系
- 在两个新节点之间创建无属性的关系
- 在两个新节点之间创建有属性的关系
- 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
注意 -
我们将创建客户和CreditCard之间的关系,如下所示:
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)
案例:
create (p1:Profile1)-[r1:喜欢]->(p2:Profile2)
9.WHERE子句
像SQL一样,Neo4j CQL在CQL MATCH命令中提供了WHERE子句来过滤MATCH查询的结果。
语法结构
WHERE <condition>
复杂的语法结构
WHERE <condition> <boolean-operator> <condition>
Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。
Neo4j 支持以下的比较运算符,在 Neo4j CQL WHERE 子句中使用来支持条件。
案例:
match (m:Employee) where m.age > 18 or m.id = 1002 return m
多个节点关联查询
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>)
案例
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