Neo4j:一、CQL语句

一、Neo4j环境搭建

Neo4j高性能图数据库从入门到实战学习视频
neo4j官方下载连接

window傻瓜式安装,点击下一步下一步

首页界面介绍

Neo4j:一、CQL语句

; 二、Neo4j构建的元素

节点

节点表示一个具体的实体。
节点可以包含:
一个或多个属性
一个或多个标签

关系

关系用于连接2个节点
关系可以包含:
一个或多个属性
一个或多个标签
要注意的是:
关系是具有方向性的,而且有3种情况:单向向左、单向向右、双向。但是neo4j好像并没有实现双向关系。要在业务中实现双向关系,貌似要通过2个单向关系来实现

标签

类似于java的类的概念,定义某类节点或某类关系。
比如:张三节点的标签是人,李四节点的标签也是人;比如兄弟关系的标签是家庭,兄妹关系的标签也是家庭。
标签可以被索引,所以建合适的标签可以提高搜索速度

语法:

:标签1
:标签1:标签2
比如:CREATE (n:西游记:人物 {name:'张三'}) RETURN n

属性

节点和关系都能拥有一个或多个属性。
语法:

{属性key:"属性value", 属性key:"属性value"}

三、CQL

CQL代表Cypher查询语言,用于查询图库的查询语言,类比SQL用于查询关系型数据库。

CQL命令用法CREATE创建节点,关系和属性MATCH检索有关节点,关系和属性数据RETURN返回查询结果WHERE提供条件过滤检索数据DELETE删除节点和关系REMOVE删除节点和关系的属性ORDER BY排序检索数据SET添加或更新标签

理解CQL

节点(小括号表示节点)

CQL中,()表示一个节点。比如:(n:person {name:’如来’})
()表示一个节点
n表示给这个节点起个别名
person表示给这个节点设置一个标签
{}里表示给这个节点设置什么属性

关系(中括号表示关系)

CQL中,[]表示一个关系。关系两边要有节点,并且要设置方向,比如

 () - [] -> ()

但在neo4j中,一条关系只能有一个方向,不能同时指向两个节点。
但允许一条关系的开始节点和结束节点都是自己。

CREATE

创建一个节点

下面两个是等价的
CREATE ()
CREATE (n)

只不过CREATE(n) 相当于给这个节点起个别名,可以直接RETURN
CREATE (n) RETURN n
创建一个节点
CREATE (n:西游记{name: "孙悟空"})
一次性创建多个节点
CREATE (n:西游记 {name: "猪八戒"}), (m:西游记 {name: "沙僧"})

创建关系

创建新的节点,并且同时给新的节点创建关系
CREATE (n:西游记{name:"唐僧"}) - [r:坐骑{attr:"属性"}]-> (m:西游记{name:"白龙马"})
return n, m

在已经被创建好的节点之间,创建1条关系
MATCH (n:西游记{name:"孙悟空"}), (m:西游记{name:"猪八戒"})
CREATE (n) -[r:师弟{attr:"属性"}]-> (m)
return n, m

在已经被创建好的节点之间,创建多条关系
MATCH (swk:西游记{name:"孙悟空"}), (zbj:西游记{name:"猪八戒"}), (ss:西游记{name:"沙僧"}), (ts:西游记{name:"唐僧"})
CREATE (swk) -[:师傅{attr:"属性"}]-> (ts), (zbj) -[:师傅{attr:"属性"}]-> (ts), (ss) -[:师傅{attr:"属性"}]-> (ts)
return swk, zbj, ss

neo4j,关系可以自己指向自己的
MATCH (n:学习 {name:'张三'})
CREATE (n)-[:自恋]->(n)
RETURN n

DELETE

删除所有节点和关系

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

或

MATCH (n) DETACH DELETE n

根据id去删除单个节点

MATCH (n)
WHERE id(n)=4
DELETE n
RETURN n

根据id去删除单个关系

MATCH  ()-[r]-() Where ID(r)=4 Delete r

根据2个节点和关系方向,删除关系

搭建测试数据
CREATE (:学习 {name: '张三'}),(:学习 {name: '李四'}),(:学习 {name: '王五'});
MATCH (p1:学习 {name: '张三'}), (p2:学习 {name: '李四'}), (p3:学习 {name: '王五'})
CREATE (p1)-[:认识]->(p2)-[:认识]->(p1)-[:认识]->(p3)
RETURN p1,p2,p3

删除张三认识李四的关系,保留李四认识张三
MATCH (n:学习 {name:'张三'}),(m:学习 {name:'李四'})
OPTIONAL MATCH (n)-[r]->(m)
DELETE r

同时删除指定的节点和它的关系

搭建测试数据
CREATE (:学习 {name: '张三'}),(:学习 {name: '李四'}),(:学习 {name: '王五'});
MATCH (p1:学习 {name: '张三'}), (p2:学习 {name: '李四'}), (p3:学习 {name: '王五'})
CREATE (p1)-[:认识]->(p2)-[:认识]->(p1)-[:认识]->(p3)
RETURN p1,p2,p3

删除张三节点,同时删除跟张三有关的关系
MATCH (n:学习 {name:'张三'})
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

或

MATCH (n学习` {name:'张三'}) DETACH DELETE n

MATCH

match关键字相当于sql的select

相当于select *
MATCH (n)
RETURN n

导入导出

  • 导出
    Neo4j:一、CQL语句
  • 导入

Original: https://blog.csdn.net/Yal_insist/article/details/125899774
Author: 我叫985
Title: Neo4j:一、CQL语句

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/557430/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球