一、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
导入导出
- 导出
- 导入
Original: https://blog.csdn.net/Yal_insist/article/details/125899774
Author: 我叫985
Title: Neo4j:一、CQL语句
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/557430/
转载文章受原作者版权保护。转载请注明原作者出处!