当前位置: 首页 > news >正文

图数据库neo4j入门

neo4j

  • 一、安装
  • 二、简单操作
    • <一>、创建
    • <二>、查询
    • <三>、关系
    • <四>、修改
    • <五>、删除
  • 三、常见报错
    • <一>、默认的数据库密码是neo4j,打开浏览器http://localhost:7474登录不上,报错: Neo.ClientError.Security.Unauthorized: The client is unauthorized due to authentication failure.

一、安装

首先要有对应的java环境,我的是在这里插入图片描述

neo4j官网地址

  • 点击Deployment Center

在这里插入图片描述

  • 往下拉,选择对应的版本,点击下载

在这里插入图片描述

  • 填好个人信息,进入下载页面,保存下面的key,打开软件登录时会用到

在这里插入图片描述

二、简单操作

  • 进入数据库后,点击open,在下图所示的$符号处输入语句

<一>、创建

1、创建节点

create (<node-name>:<label-name>)
  • node-name:要创建的节点名称
  • label-name:要创建的标签名称

eg:

create (s:Student)
  • 上述的Student就类似于关系型数据库的表

2、创建带属性的节点

create (<node-name>:<label-name> {<property1-name>:<property1-Value>,<property2-name>:<property2-Value>,...,<property3-name>:<property3-Value>
})

eg:

create (s:Student{id = 1,name = "李世民",age=2000})
  • 上述的id,name,age就类似于关系型数据库表中的字段

3、merge

  • 类似于oracle中的merge操作,若节点不存在则创建,若节点已存在则进行更新
merge (a:Person {name:"李世民"})
merge (b:Person {name:"李治"})
merge (b)-[:SON]->(a)
  • 条件性创建或匹配
merge (p:Person {name: "嬴政"})
on create set p.age = 30
on match set p.height = 190
  • 上述代码表示检查是否存在一个具有"Person"标签且属性"name"为"嬴政"的节点,如果不存在,则创建一个且设置属性age为30;如果已存在,则设置height属性为190

<二>、查询

1、查询全部

match (s:Student) return s;

2、查询部分

match (s:Student) return s.id,s.name;

3、按条件查询

match (s:Student) where s.age > 20 return s.id,s.name;

4、排序

match (s:Student) where s.age < 20 return s.id,s.name order by s.age desc;

5、分组

  • neo4j的分组不用显式的指定group by,未加聚合函数的字段默认为分组字段
  • 这里一共有三个字段,id,name,age,return id,其中name,age相当于未加聚合字段,即按其分组
  • 相当于sql:select s.id,count(*) from Student s where s.age < 20 group by s.age,s.name
match (s:Student) where s.age < 20 return s.id,count(*);

6、limit语句

match (s:Student) where s.age < 20 return s.id,s.name limit 3;
  • 跳过多少行再limit
match (s:Student) where s.age < 20 return s.id,s.name skip 2 limit 3;

<三>、关系

  • 图数据库与关系型数据库最大的区别就是图可以存储多边关系

1、创建关系

  • 创建一个老师节点
create (t:Teacher{id:20001,name:"王老师",age:35,teach:"语文"}) return t
  • 创建关系,年龄小于20的都是该老师学生
match (t:Teacher),(s:Student) where s.age < 20 
create (t)-[teach:Teach]->(s) 
return t,teach,s;

2、查询全部关系

match (a)-[b]-(c) return a,b,c;

<四>、修改

match (s:Student) where s.name = '李世民' set s.age = 2000 return s;

<五>、删除

1、删除部分节点

match (s:Student) where s.age < 20 delete s;

注:若节点有关系需先删除关系

match (t:Teacher)-[teach]->(s:Student) where s.age < 20 delete teach,s;

2、删除整个节点

match (s:Student) delete s;

3、删除全部节点以及关系(慎用!)

match (n) detach delete n

4、删除节点的属性

  • 可以用remove
match (s:Student{name:"李世民"}) remove s.age;

三、常见报错

<一>、默认的数据库密码是neo4j,打开浏览器http://localhost:7474登录不上,报错: Neo.ClientError.Security.Unauthorized: The client is unauthorized due to authentication failure.

  • 找到neo4j.conf文件

在这里插入图片描述

  • 最直接方法是修改dbms.security.auth_enabled=false,表示禁用身份验证,任何人可以无需凭证访问数据库

相关文章:

  • 备战蓝桥杯---搜索(完结篇)
  • java 回答问题
  • Blender教程(基础)-顶点的移动、滑移-16
  • go-基于逃逸分析来提升性能程序
  • Java基础常见面试题总结-集合(二)
  • 6. 尚硅谷大数据111门技术+42个项目
  • 测试:JMeter如何获取非json格式的响应参数
  • flink写入es的参数解析
  • MongoDB聚合: $sortByCount
  • Adobe Camera Raw for Mac v16.1.0中文激活版
  • 【蓝桥杯单片机记录】IO基础与LED控制
  • 手动汉化unity编辑器,解决下载中文语言报错问题
  • STM32F407 CAN参数配置 500Kbps
  • 堆的数据结构以及堆的相应操作
  • ZooKeeper安装及配置(Windows版)
  • [译] React v16.8: 含有Hooks的版本
  • HomeBrew常规使用教程
  • JavaScript DOM 10 - 滚动
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql innodb 索引使用指南
  • Redash本地开发环境搭建
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 开发基于以太坊智能合约的DApp
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 用jquery写贪吃蛇
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • zabbix3.2监控linux磁盘IO
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #WEB前端(HTML属性)
  • $(function(){})与(function($){....})(jQuery)的区别
  • (1)(1.11) SiK Radio v2(一)
  • (11)MATLAB PCA+SVM 人脸识别
  • (k8s中)docker netty OOM问题记录
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (三)Honghu Cloud云架构一定时调度平台
  • (算法)Game
  • .NET Core中Emit的使用
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET6 命令行启动及发布单个Exe文件
  • @hook扩展分析
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ 蓝桥杯Web真题 ]-布局切换
  • [<死锁专题>]
  • [100天算法】-二叉树剪枝(day 48)
  • [16/N]论得趣
  • [AIGC] Redis基础命令集详细介绍
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [cb]UIGrid+UIStretch的自适应
  • [CF]Codeforces Round #551 (Div. 2)
  • [CISCN2019 华东南赛区]Web11
  • [Django ]Django 的数据库操作