Neo4j:一、CQL语句

一、Neo4j环境搭建

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

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

首页界面介绍

在这里插入图片描述

二、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

导入导出

  • 导出
    在这里插入图片描述
  • 导入
  • 在这里插入图片描述
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我叫985

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

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

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

打赏作者

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

抵扣说明:

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

余额充值