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介绍相关推荐

  1. Neo4j官方入门实例介绍

    2.4 官方入门实例介绍 本节的内容不必深入掌握,主要是给大家一个简单的认识,具体的 Cypher 语言在下一章会详细讲解. 为了方便用户入门, Neo4j Web 管理界面提供了一个官方入门实例 & ...

  2. Neo4j(二) Neo4j中的入门CRUD操作(小猪佩奇关系网)

    Neo4j(二) Neo4j中的CRUD操作(小猪佩奇关系网) 本章介绍Neo4j中的基本操作 以小猪佩奇的关系网为案例 素材来自B站视频学习 前言 上图为小猪佩奇一家人,为了更加丰富,案例添加了人物 ...

  3. 知识图谱系列之neo4j入门

    neo4j入门 最近需要搭一个小型的图数据库,neo4j自然是首选了,目前做知识图谱方面研究的自然都知道neo4j,但是neo4j目前的资料还比较少,这种数据库目前用户也不算多,好在neo4j比较简单 ...

  4. neo4j入门开发,以及在sns关系中的应用

    2019独角兽企业重金招聘Python工程师标准>>> neo4j入门开发,以及在sns关系中的应用 博客分类: neo4j 一些非常好的资料: 基于java api的开发 http ...

  5. linux neo4j 教程,Neo4j 入门教程 - 安装

    本篇来简单介绍下如何下载并安装 Neo4j,篇目很短,因为真的很简单. 下载 Neo4j 首先在 https://neo4j.com/download/ 下载 Neo4j.你可以选择企业体验版或者免费 ...

  6. Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱

    Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱 前言 一.Neo4J简介 对比关系型数据库: 对比其他NoSQL数据库 二.Neo4J下载安装 方法1:安装Neo4j Community ...

  7. neo4j入门实例(电影和演员的例子)

    neo4j入门实例(电影和演员的例子) neo4j安装好后,在http://localhost:7474/browser/界面输入:play movie graph 就可以直接能看到电影的知识图谱例子 ...

  8. 知识图谱neo4j入门教程

    因为研究生需要学习知识图谱,在网上找了一些教程没有很合适的,所以在此记录所学方便以后查看.(会陆续更新,学到哪写到哪,先按照我自己的笔记写了,等有人看再整理顺序吧.) PS:本人是个小白,写的比较通俗 ...

  9. Neo4J入门笔记[2]---导出数据为CSV

    在上一节<Neo4J入门笔记[1]-安装以及Cypher基本语法> 笔者主要分享了Neo4J的安装已经常用的命令.这个章节笔者分享从Neo4j里面导出数据到CSV.一个简单的方法,就是调用 ...

最新文章

  1. 【译】 WebSocket 协议第十一章——IANA 注意事项(IANA Considerations)
  2. SDUTOJ [2801] 并查集模板
  3. 线性代数行列式计算之迭代法
  4. 使用对象存储应对勒索病毒
  5. Awesome Deep Vision
  6. 对称加密算法原理与常用实现
  7. SQL的汇总统计SELECT语句
  8. NO.47 确定项目要完成的需求列表
  9. [洛谷P1642]规划
  10. UVa 642 - Word Amalgamation
  11. 一文教你安全的关闭线程池
  12. 网管面试题1-windows
  13. linux离线卸载docker,Linux系统下Docker的安装与卸载
  14. 6010dn 华为 组网 胖ap_家庭网络AC+AP升级改造记录
  15. Linux中vim命令详解
  16. 怀旧系列(2)----FoxBase,UCDOS,WPS
  17. 含泪整理MySQL索引
  18. 向日葵设置开机自启动
  19. Android - 一个似神器而非神器之Palette探索与实践
  20. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问

热门文章

  1. html5实现图片预览和查看原图
  2. 机器学习中的异常检测
  3. 星辰变后面的鸿蒙,星辰变:秦羽成为鸿蒙掌控者七位关键人物,没有最后一位早已身陨...
  4. 如何使用GMAP/GSNAP进行转录组序列比对
  5. 塔望食品品牌策划:盘点食品产业变化4大关键词及3大发展趋势
  6. 计算机毕业设计ssm高校求职招聘智能推荐1875f系统+程序+源码+lw+远程部署
  7. Python里的阻塞队列
  8. 2016年开发的供水管线设计工具进行升级
  9. 液压比例溢流阀R901170278、DBET-62/200G24-8K4V
  10. 计算机二级一做题就不会,2017年计算机二级考试做题经验分享