【Neo4j入门】Neo4j介绍
Neo4j入门笔记
- 1 图数据库neo4j介绍
- 1.1 什么是图数据库
- 2 环境搭建
- 2.1 安装
- 2.2 使用
- 3 Neo4j-CQL使用
- 3.1Neo4j-CQL简介
- 3.2常用命令
- load csv
- create创建
- 创建节点
- 创建关系
- 创建全路径
- match查询
- return返回
- where 子句
- delete删除
- remove
- set 添加属性
- order by
- union子句
- limit和skip子句
- null值
- in操作符
- index索引
- unique 约束
- distinct
- 3.3 常用函数
- 字符串函数
- aggregation聚合
- 关系函数
- 3.4 neo4j-admin使用
- 数据库备份
- 数据库恢复
声明:仅作为自己笔记的记录,不带任何商用价值,出处链接如下
B站视频链接: https://www.bilibili.com/video/BV1Hb4y1a7Nb?spm_id_from=333.880.my_history.page.click.
1 图数据库neo4j介绍
1.1 什么是图数据库
图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据。
2 环境搭建
下载地址:链接: https://neo4j.com/downlosd-center/
安装方式:Neo4j Community Server(社区版)
2.1 安装
jdk8可以下载Neo4j Community Edition 3.5.28
2.2 使用
1.数据导入
.csv格式的文件导入到目录文件下的import中
2.neo4j的打开
在目录文件下的bin文件夹路径显示那里输入‘cmd’打开命令窗口->输入’neo4j console’回车,运行->复制网址到浏览器打开
3 Neo4j-CQL使用
3.1Neo4j-CQL简介
Neo4j的Cypher语言是为处理图形数据而构建的,CQL代表Cypher查询语言。
- 它是Neo4j图形数据库的查询语言
- 是一种声明性模式匹配语言
- 遵循SQL语法
- 语法非常简单且人性化、可读的格式
CQL命令 | 用法 |
---|---|
create | 创建节点,关系和属性 |
match | 检索有关节点,关系和属性数据 |
return | 返回查询结果 |
where | 提供条件过滤检索文件 |
delete | 删除节点和关系 |
remove | 删除节点和关系的属性 |
order by | 排序检索数据 |
set | 添加或更新标签 |
使用cypher语言来描述关系
eg: (fox)<-[:knows]-(周瑜)-[:knows]->(诸葛)-[:knows]->(fox)
3.2常用命令
load csv
导入csv到neo4j
//将csv拷贝到%NEO4J_HOME%\import目录
load csv from "file:///西游记.csv" as line
create(:西游{name:line[0],tail:line[1],label:line[3]})
load csv from “file:///西游记.csv” as line
create(:xiyouRelation{from:line[1],relation:line[3],to:line[0]})
lmatch p=(:
person
{name:‘孙悟空’})-[r:xiyouRelation
]->() return p
load csv from ‘file:///人物.csv’ as line
create(:person{name:line[0]})
//查询人物
match (n:‘person’ {name:‘孙悟空’}) return n
//或者返回id
match (n:person
{name:‘孙悟空’}) return n.name,id(n)
//通过where方式寻找
match (n:person
) where n.name=‘孙悟空’
return n.name,id(n)
create创建
创建模型语句用来创建数据模型
创建节点
//创建简单节点
create(n)
//创建多个节点
create(n),(m)
//创建带标签和属性的节点并返回节点
create(n:person{name:'如来'}) return n
Create(:student{name:”小红”}),(:student{name:”小明”})
create (:student{name:“小兰”}),(:student{name:“小路”})
创建关系
- 单向关系
- 双向关系
//使用新节点创建关系
create(n:person {name:'杨戬'})-[r:师傅]->(m:person {name:'玉鼎真人'})
return type(r)//使用已知节点创建带属性的关系
match(n:person {name:'沙僧'}),(m:person{name:'唐僧'})
create (n)-[r:'师傅'{relation:'师傅'}]->(m)
return r
//检索关系节点的详细信息
match (n:person)-[r]-(m:person)
return n,m
//找到相互间的关系
match (n:person {name:‘孙悟空’}),(m:xiyouRelation) where m.from=‘孙悟空’
return n.name,m.relation,m.to
//建立关系
match (n:person {name:‘孙悟空’}),(m:xiyouRelation),(s:person) where m.from=‘孙悟空’ and m.to=s.name
create (n)-[:西游人物关系{relation:m.relation}]->(s)
return n.name,m.relation,s.name
match (n:person {name:‘沙僧’}),(m:xiyouRelation),(s:person) where
m.from=n.name and m.to=s.name create
(n)-[:西游关系{relation:m.relation}]->(s)
return n.name,m.relation,s.name
//使用新节点创建关系 ,创建关系时需要先找到节点
match(n:student{name:“小明”}),(m:student{name:“小红”})
create (n)-[r:同学{relation:“同学”}]->(m)
//或者 create (n)-[r:同学]->(m)
return n.name,type( r ),m.name
创建全路径
create p=(:person{name:'蛟魔王'})-[:义兄]->(:person{name:'牛魔王'})<-[:义兄]-(:person{name:'鹏魔王'})
return p
match查询
- 从数据库中获取有关节点和属性的数据
- 从数据库获取有关节点,关系和属性的数据
//查询全部结点
match (n:'西游') return n
//全部节点的关系
match p=()-[r:西游关系
]->() return p
//指定节点的关系
match p=(:person{name:‘孙悟空’})-[r:西游关系
]->() return p
//得到所有节点
match(n:“节点名”) return n
//某个指定节点
match(n:person{name:‘孙悟空’})return n.name,id(n)
//或者
match(n:person)where n.name=‘孙悟空’ return n.name,id(n)
return返回
- 检索结点的某些或者所有属性
- 检索结点和关联关系的某些或者所有属性
match (n:person) return id(n),n.name,n.tail,n.relation
where 子句
-过滤match查询的结果
match(n:person) where n.name='小兰' or n.name='小红' return n
#创建关系
math (n:person),(m:person) where n.name='小兰' and m.name='小红'
create(n)-[r:同学]->(m) return n.name,type(r),m.name
delete删除
- 删除结点
- 删除结点及相关结点和关系
# 删除关系
match(n:student{name:"小张"})<-[r]-(m) delete r return type(r)
#删除节点 (节点不存在关系)
match(n:person{name"小张"}) delete n
remove
- 删除结点或关系的标签、属性
#删除属性
match(n:role{name:"fox"}) remove n.age return n
#创建结点
create(m:role:person{name:"fox1"})
#删除标签
match(m:role:person{name:"fox1"})remove m:person return m
match(n:person{name:“小兰”})remove n:person return n
set 添加属性
- 给现有结点或关系添加新属性
- 添加或更新属性值
match(n:student{name"小红"})set n.age=18,n.sex='女'return n
order by
- 排序操作,默认升序,降序使用desc子句
match(n:person) return id(n),n.name order by id(n) desc
union子句
- union
- 将两组结果中的公共行组合并返回一组结果中。不是从两个节点返回重复的行。
- 限制:结果列类型和来自两组结果的名称必须匹配,即列名称应该相同,列的数据类型应该相同
- union all
- 结合并返回两个结果集的所有行成一个单一的结果集,还返回由两个结点重复行
- 限制:结果列类型,并从两个结果集的名字必须匹配,这意味着列名称应该相同,列的数据类型应该相同
match(n:role)return n.name as name
union
match(m:person)return m.name as namematch(n:role)return n.name as name
union all
match(m:person)return m.name as name
limit和skip子句
- 过滤或限制查询返回的行数
- limit返回前几行,skip忽略前几行
#前两行
match(n:person)return n limit 2
#忽略前两行
match(n:person)return n skip 2
null值
- 空值视为对节点或关系的属性的缺失值或未定义值
- 创建一个具有现有结点标签名称但未指定其属性值的结点时,它将创建一个具有null属性值的新结点
match(n:person)where n.label is null return id(n),n.name,n.tail,n.label
in操作符
- 为CQL命令提供值的集合
match(n:person)where n.name in ['小兰','小红'] return id(n),n.name,n.tail,n.label
index索引
- 支持结点或关系属性上的索引
- 可以为相同标签名称的所有结点的属性创建索引
- 可以在match或where或in运算符上使用这些索引改进CQL Command的执行
- create index 创建索引
- drop index丢弃索引
#创建索引
create index on :'西游'(name)
#删除索引
drop index on:'西游'(name)
unique 约束
- CQL CREAT命令时钟创建新的结点或关系,这意味着即使使用相同的值,也会插入一个新行。
- 支持对node或relationship的属性的unique约束
- 避免重复
- 强制执行数据完整性规则
#创建唯一约束
create constraint on(n:xiyou)assert n.name is unique
#删除唯一约束
drop constraint on(n:xiyou)assert n.name is unique
distinct
- 返回所有不同值
match(n:'西游')return distinct(n.name)
3.3 常用函数
字符串函数
功能 | 描述 |
---|---|
upper | 所有字母大写 |
lower | 所有字母小写 |
substring | 获取给定string的子字符串 |
replace | 替换一个字符串的子字符串 |
match (e) return id(e),e.name,substring(e.name,0,2)
aggregation聚合
match(e) return count(e)
关系函数
功能 | 描述 |
---|---|
startnode | 获取关系的开始结点 |
endnode | 获取关系的结束结点 |
id | 获取关系的id |
type | 获取字符串表示中的一个关系的type |
match(a)-[r]->(b) return id®,type®
3.4 neo4j-admin使用
cmd下neo4j目录下输入一下命令
数据库备份
对neo4j数据进行备份、还原、迁移的操作时,要关闭neo4j
cd %NEO4J_HOME%/bin
#关闭neo4j 一定要先neo4j install-service,才可以执行neo4j stop
neo4j stop
#备份
neo4j-admin dump --database=graph.db --to=/neo4j/backup/graph_backup.dump
数据库恢复
还原、迁移之前,要关闭neo4j服务
#数据导入
neo4j-admin load --from=/neo4j/backup/graph_backup.dump --database=graph.db --force
#重启服务
neo4j start
【Neo4j入门】Neo4j介绍相关推荐
- Neo4j官方入门实例介绍
2.4 官方入门实例介绍 本节的内容不必深入掌握,主要是给大家一个简单的认识,具体的 Cypher 语言在下一章会详细讲解. 为了方便用户入门, Neo4j Web 管理界面提供了一个官方入门实例 & ...
- Neo4j(二) Neo4j中的入门CRUD操作(小猪佩奇关系网)
Neo4j(二) Neo4j中的CRUD操作(小猪佩奇关系网) 本章介绍Neo4j中的基本操作 以小猪佩奇的关系网为案例 素材来自B站视频学习 前言 上图为小猪佩奇一家人,为了更加丰富,案例添加了人物 ...
- 知识图谱系列之neo4j入门
neo4j入门 最近需要搭一个小型的图数据库,neo4j自然是首选了,目前做知识图谱方面研究的自然都知道neo4j,但是neo4j目前的资料还比较少,这种数据库目前用户也不算多,好在neo4j比较简单 ...
- neo4j入门开发,以及在sns关系中的应用
2019独角兽企业重金招聘Python工程师标准>>> neo4j入门开发,以及在sns关系中的应用 博客分类: neo4j 一些非常好的资料: 基于java api的开发 http ...
- linux neo4j 教程,Neo4j 入门教程 - 安装
本篇来简单介绍下如何下载并安装 Neo4j,篇目很短,因为真的很简单. 下载 Neo4j 首先在 https://neo4j.com/download/ 下载 Neo4j.你可以选择企业体验版或者免费 ...
- Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱
Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱 前言 一.Neo4J简介 对比关系型数据库: 对比其他NoSQL数据库 二.Neo4J下载安装 方法1:安装Neo4j Community ...
- neo4j入门实例(电影和演员的例子)
neo4j入门实例(电影和演员的例子) neo4j安装好后,在http://localhost:7474/browser/界面输入:play movie graph 就可以直接能看到电影的知识图谱例子 ...
- 知识图谱neo4j入门教程
因为研究生需要学习知识图谱,在网上找了一些教程没有很合适的,所以在此记录所学方便以后查看.(会陆续更新,学到哪写到哪,先按照我自己的笔记写了,等有人看再整理顺序吧.) PS:本人是个小白,写的比较通俗 ...
- Neo4J入门笔记[2]---导出数据为CSV
在上一节<Neo4J入门笔记[1]-安装以及Cypher基本语法> 笔者主要分享了Neo4J的安装已经常用的命令.这个章节笔者分享从Neo4j里面导出数据到CSV.一个简单的方法,就是调用 ...
最新文章
- 【译】 WebSocket 协议第十一章——IANA 注意事项(IANA Considerations)
- SDUTOJ [2801] 并查集模板
- 线性代数行列式计算之迭代法
- 使用对象存储应对勒索病毒
- Awesome Deep Vision
- 对称加密算法原理与常用实现
- SQL的汇总统计SELECT语句
- NO.47 确定项目要完成的需求列表
- [洛谷P1642]规划
- UVa 642 - Word Amalgamation
- 一文教你安全的关闭线程池
- 网管面试题1-windows
- linux离线卸载docker,Linux系统下Docker的安装与卸载
- 6010dn 华为 组网 胖ap_家庭网络AC+AP升级改造记录
- Linux中vim命令详解
- 怀旧系列(2)----FoxBase,UCDOS,WPS
- 含泪整理MySQL索引
- 向日葵设置开机自启动
- Android - 一个似神器而非神器之Palette探索与实践
- Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
热门文章
- html5实现图片预览和查看原图
- 机器学习中的异常检测
- 星辰变后面的鸿蒙,星辰变:秦羽成为鸿蒙掌控者七位关键人物,没有最后一位早已身陨...
- 如何使用GMAP/GSNAP进行转录组序列比对
- 塔望食品品牌策划:盘点食品产业变化4大关键词及3大发展趋势
- 计算机毕业设计ssm高校求职招聘智能推荐1875f系统+程序+源码+lw+远程部署
- Python里的阻塞队列
- 2016年开发的供水管线设计工具进行升级
- 液压比例溢流阀R901170278、DBET-62/200G24-8K4V
- 计算机二级一做题就不会,2017年计算机二级考试做题经验分享