CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
常用的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等。 |
Neo4j CQL - CREATE命令
CREATE (<node-name>:<label-name>)
语法元素 | 描述 |
---|---|
CREATE | 它是一个Neo4j CQL命令。 |
<node-name> | 它是我们要创建的节点名称。 |
<label-name> | 它是一个节点标签名称 |
Neo4j CQL创建具有属性的节点
CREATE ( <node-name>:<label-name> { <Property1-name>:<Property1-Value> ........ <Propertyn-name>:<Propertyn-Value> } )
语法元素 | 描述 |
---|---|
<node-name> | 它是我们将要创建的节点名称。 |
<label-name> | 它是一个节点标签名称 |
<Property1-name>...<Propertyn-name> | 属性是键值对。 定义将分配给创建节点的属性的名称 |
<Property1-value>...<Propertyn-value> | 属性是键值对。 定义将分配给创建节点的属性的值 |
create (dept:Dept{no: 10, name:"市场部", address: "成都"})
Neo4j CQL - MATCH命令
MATCH ( <node-name>:<label-name> )
语法元素 | 描述 |
---|---|
<node-name> | 这是我们要创建一个节点名称。 |
<label-name> | 这是一个节点的标签名称 |
match (n:Dept) return n
match必须和return一起使用
Neo4j CQL - 关系基础
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
这里p1和profile1是节点名称和节点标签名称“From Node”
p2和Profile2是“To Node”的节点名称和节点标签名称
r1是关系名称
LIKES是一个关系标签名称
Neo4j CQL - WHERE子句
match (n:Employee) where n.name = "frank" return n
Neo4j CQL - DELETE删除
MATCH (e: Employee) DELETE e
先查询出来再删除掉。
删除指定节点的属性
MATCH (book { id:122 })
REMOVE book.price
RETURN book
Neo4j CQL - ORDER BY排序
MATCH (n:Employee) RETURN n order by n.deptno desc
UNION子句语法
<MATCH Command1> UNION <MATCH Command2>
下面就是返回两个相同的列名
MATCH (cc:CreditCard) RETURN cc.id,cc.number UNION MATCH (dc:DebitCard) RETURN dc.id,dc.number
UNION ALL子句
它结合并返回两个结果集的所有行成一个单一的结果集。它还返回由两个节点重复行。
MATCH (cc:CreditCard) RETURN cc.id as id,cc.number as number,cc.name as name, cc.valid_from as valid_from,cc.valid_to as valid_to UNION ALL MATCH (dc:DebitCard) RETURN dc.id as id,dc.number as number,dc.name as name, dc.valid_from as valid_from,dc.valid_to as valid_to
MATCH (n:Employee) RETURN n skip 3
skip跳过3个节点返回最后两条数据
MERGE命令是CREATE命令和MATCH命令的组合。
MERGE = CREATE + MATCH
Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果
如果它不存在于图中,则它创建新的节点/关系并返回结果。
Neo4j - 方向关系
CREATE (<node1-details>)-[<relationship-details>]->(<node2-details>)
<node1-details>是“From Node”节点详细信息
<node2-details>是“到节点”节点详细信息
relationship-details>是关系详细信息
使用一个箭头标记:() - []→()。 它表示从左侧节点到右侧节点的方向。
如果我们尝试使用相同的语法,没有箭头标记like() - [] - (),这意味着没有方向的关系。 然后Neo4j DB服务器应该抛出一个错误消息
CREATE (n1:Node1)-[r1:Relationship]->(n2:Node2)
CREATE (n1:Node3)<-[r1:Relationship]-(n2:Node2)
Neo4J索引操作
- Create Index 创建索引
- Drop Index 丢弃索引
-
CREATE INDEX ON :Customer (name)
Neo4j CQL - UNIQUE约束
CREATE CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE
给节点creditcard的节点的number设置唯一约束
DROP CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE
删除唯一约束
springboot集成neo4j的demo
https://gitee.com/chenxb/springboot-neo4jhttps://gitee.com/chenxb/springboot-neo4j
1.match (n: Class{name: "大学英语"}) delete n 删除指定的节点
match (n:profession) detach delete n 删除节点!!!
match (n) delete n
match是匹配操作,小括号代表一个节点 n为标识符
match (n: Profession) delete n 删除整个节点下的所有数据
2.create (n: Class{name: "大学英语", address: "北京大学"}) return n 创建节点
create是创建操作, Class是标签,代表节点的类型,花括号代表节点的属性。里面有两个属性
create (n1: Class{name: "大学英语", address: "北京大学"})
create (n2: Class{name: "大学物理", address: "北京大学"})
create (n3: Class{name: "高等数学", address: "北京大学"})
return n1,n2,n3
create (n1: Profession{name: "计算机专业", address: "北京大学"})
create (n2: Profession{name: "软件工程", address: "北京大学"})
create (n3: Profession{name: "大数据", address: "北京大学"})
return n1,n2,n3
3.创建关系
create (n1: class{name: "大英2"})
create (n2: class{name: "大英3"})
create (n1)-[r: BASIC] ->(n2)
return n1,n2
create (n:class{name: "大学英语6"})-[r:BASIC{name: "基础"}]->(m:class{name: "大学英语7"}) return r
create (n:class{name: "大学英语10"})<-[r:BASIC{name: "基础"}]-(m:class{name: "大学英语9"}) return n,m
create (a:Person{name:'Frank'}) -[r:BORN_IN{year: 2001}]-> (b:Location{city:'beijing'}) return a,b
create (a:Person{name:'kangkang'}) -[r:Friends{sicen: 2020}] -> (b:Person{name:'xiaoxiao'}) return a, b
这里的[]即为关系,BASIC为关系类型,这里的箭头是有方向的,表示从n1到n2的关系。
match (n:Person{name: 'tom'}) -[rel:FriendShip]-(m:Person{name:'jack'}) delete rel 删除关系
match (n:Person{name: 'xiaoxiao'}) -[rel:Friends]-(m:Person{name:'chenchen'}) delete rel
MATCH (n: ENTERPRISE {enterpriseId: $enterpriseId}) <- [r: CONTRIBUTE ] - (m) delete r
4.关系增加属性
create (n1: class{name: "大英2"})
create (n2: class{name: "大英3"})
create (n1)-[r: BASIC{since: 2021}] ->(n2)
return n1,n2
create (n1: class{name: "大英1"})
create (n2: class{name: "大英2"})
create (n3: class{name: "大英3"})
create (n1)-[r1: BASIC{since: 2021}] ->(n2)
create (n2)-[r2: BASIC{since: 2021}] ->(n3)
return n1,n2,n3
5.不同类型节点之间的关系->课程和专业的关系
create (n1: class{name:"大英1"})
create (n2: class{name:"大英2"})
create (n3: class{name:"大英3"})
create (m1: profession{name:"计算机专业"})
create (m2: profession{name:"软件工程"})
create (m3: profession{name:"大数据"})
create (n1)-[r1: BASIC] ->(n2)
create (n2)-[r2: BASIC] ->(n3)
create (m1)-[r3: QEQUIRE] ->(n1)
create (m2)-[r4: QEQUIRE] ->(n1)
create (m3)-[r5: QEQUIRE] ->(n1)
return n1,n2,n3,m1,m2,m3
MATCH p=(n:Enterprise{name:'合肥新立信信息科技有限公司'})-[r:Contribute]-() RETURN p
查询该企业的 关系为Contribute的 都有关系的数据