玩转图数据库:Neo4j 部署与实战

从零基础安装到手写 Cypher 跑通全流程

纯动手实践课 · 请打开你的电脑跟着做

本节课实战地图

环境搭建

  • Windows 环境保姆级安装
  • Ubuntu 环境部署指南
  • 核心配置文件解读

编码热身

  • 数据类型与命名避坑
  • 保留关键字速查
  • 准备构建“校园关系网”

增删改查大通关

  • 一步步敲出节点与关系
  • 条件过滤与分页展现
  • 最终 BOSS:独立实战测验

第一阶段:点亮服务器

没有金刚钻,揽不了瓷器活。
让我们先把 Neo4j 跑起来!

Win 环境部署 - 步骤一:前置准备

关键避坑:Java 环境

Neo4j 是用 Java 写的,所以你的电脑必须有 JDK!


  • Neo4j 3.x/4.x 版本: 需要 JDK 8 或 JDK 11。
  • Neo4j 5.x 版本: 强制要求 JDK 17 及以上!

如何检查?

打开终端(CMD 或者 PowerShell),输入:

java -version

如果没有反应或者版本不对,请先去配置 Java 环境变量!

Win 环境部署 - 步骤二:下载与解压

下载绿色解压版

去官网下载 Community Edition (社区免费版) 的 zip 压缩包。
强烈建议:解压到一个没有中文、没有空格的路径下!(例如:D:\dev\neo4j


认识目录结构

  • bin/:启动脚本都在这里(我们马上要用的)。
  • conf/:配置文件所在目录。
  • data/:你以后存的图数据都在这里(别乱删)。

Win 环境部署 - 步骤三:启动服务

启动命令

打开 CMD,进入到 bin 目录下,执行:

neo4j console

(出现 "Started" 字样代表启动成功。黑窗口千万不要关,关了数据库就停了!)

登录后台

打开浏览器,输入神器网址:

http://localhost:7474
  • 默认账号:neo4j
  • 默认密码:neo4j
  • 首次登录会强制要求你修改密码,请记住你改的密码!

Ubuntu 环境部署速通

服务器上的操作逻辑完全一样

如果你在使用 Linux 虚拟机,可以使用 tar.gz 包进行安装:

# 1. 解压
tar -zxvf neo4j-community-xxx-unix.tar.gz

# 2. 进入 bin 目录启动
cd neo4j-community-xxx/bin
./neo4j start

提示:Linux 下推荐用 start 放在后台运行,而不是 console

必知必会的配置文件

neo4j.conf

conf 目录下,用记事本或 VSCode 打开它。

常见痛点:
为什么装在 Linux 服务器上,我本机的浏览器访问不了 7474 页面?

解决远程访问问题

找到下面这一行,把前面的 #(注释)删掉:

dbms.default_listen_address=0.0.0.0

这段代码的意思是允许所有外部 IP 访问该数据库。
改完记得重启 Neo4j!

第二阶段:编码前的热身

写代码最怕“粗心大意”。
花两分钟记牢这几个规范,少报 80% 的错。

Cypher 实战避坑指南

1

关于引号

文本(String)必须加引号:
错: name: 张三
对: name: '张三'

数字和布尔值千万别加引号:
对: age: 20, isMale: true

2

关于大小写

Cypher 对数据极其敏感!
标签 :Student:student 会被系统认成两个完全不同的类别。
习惯养成:类别名首字母一律大写!

3

保留关键字

别拿系统命令当自己的变量名!避开以下词汇:
CREATE, MATCH, RETURN, WHERE, SET, REMOVE, DELETE 等。
(你在命令行里敲出来会高亮的词,都别当名字用)。

第三阶段:增删改查实操

实战任务:构建一个“大学选课与人脉网”
请大家在 Neo4j Browser 的顶部输入框中跟着敲!

CREATE:创建学生节点

任务:创建两位学生(小明和小红)

在浏览器顶部的框框里,输入以下代码并点击右侧蓝色的 运行:

CREATE (s1:Student {name: '小明', age: 19, major: '大数据'})
CREATE (s2:Student {name: '小红', age: 20, major: '软件工程'})
  • s1s2 是我们临时给节点起的“小名”(变量名)。
  • :Student 是标签,告诉数据库他们都是学生。
  • {} 里面放的是详细属性。

CREATE:创建课程与关系

任务:创建课程并让小明选课

如果我们要一步到位,既创建课程,又把小明和课程连起来:

MATCH (s:Student {name: '小明'})
CREATE (c:Course {courseName: 'Neo4j图数据库', credit: 2})
CREATE (s)-[r:CHOOSE {term: '大二上'}]->(c)
  • 第一行: 先用 MATCH 把之前建好的“小明”找出来。
  • 第二行: 创造一个全新的课程节点 Course
  • 第三行: 画一条名为 CHOOSE(选课)的箭头,从小明指向课程。

MATCH & RETURN:见证奇迹

查询我们的图谱

数据录进去了,怎么看图?敲入这行代码:

MATCH (n)
RETURN n

(因为目前我们刚建库,数据量极小,所以可以直接查所有节点 n)

你会看到什么?

执行后,浏览器下方会出现一个可视化的图表。

  • 看到圆圈了吗?那是节点。
  • 看到带方向的线了吗?那是关系。
  • 试着鼠标悬停在圆圈上,查看底部的属性面板。这就是图数据库的直观魅力!

LIMIT & SKIP:学会数据截断

控制返回数量

在实际企业开发中,动辄千万级数据,绝不能直接 RETURN n。我们需要分页展示。

MATCH (s:Student)
RETURN s.name, s.age
SKIP 1
LIMIT 1

解释:
找出所有学生,只返回名字和年龄。
SKIP 1:跳过第 1 个人。
LIMIT 1:只抓取 1 个人出来。

WHERE:精准捞人

条件过滤实操

我们要找出所有“年龄大于等于20岁”的学生:

MATCH (s:Student)
WHERE s.age >= 20
RETURN s

运行一下,是不是只有“小红”被查询出来了?
大家可以自己试着改成 WHERE s.name STARTS WITH '小' 测试模糊匹配!

SET:修改与打标签

1. 修改属性 / 新增属性

小明过完年,长了一岁,并且我们要给他加一个“社团”属性:

MATCH (s:Student {name: '小明'})
SET s.age = 20, s.club = '电竞社'
RETURN s

2. 动态追加标签

小明当选了班长,我们在不删除原标签的情况下,给他加个新身份:

MATCH (s:Student {name: '小明'})
SET s:Monitor
RETURN s

(查看图谱,小明现在既是 Student 又是 Monitor 了)

REMOVE vs DELETE:删属性还是删节点?

REMOVE:擦掉局部信息

小明退出了社团,我们要把 club 属性擦掉:

MATCH (s:Student {name: '小明'})
REMOVE s.club
RETURN s

DELETE:彻底销毁(带关系的拔除法)

要把小明开除,但他身上还绑着“选课”的关系线。必须用 DETACH DELETE 连根拔起!

MATCH (s:Student {name: '小明'})
DETACH DELETE s

最终考核:独立通关挑战

光看老师敲可不行!
现在,轮到你们自己构建一个“企业管理图谱”了!

挑战任务书 (1/2)

请结合刚才讲的知识,在你的机器上一步步执行以下操作:

任务一:建人、建部门、建关系 (CREATE)

  • 创建一个员工:标签 Employee,名字叫“老王”,工资 salary: 8000
  • 创建一个部门:标签 Department,部门名叫“大数据研发部”。
  • 创建一条关系:老王 -[WORKS_IN]-> 大数据研发部。

任务二:升职加薪 (SET)

  • 用 MATCH 找到老王。
  • 给老王涨工资,把 salary 修改为 12000
  • 给老王追加一个新标签:Manager

挑战任务书 (2/2)

任务三:精准查询 (MATCH & WHERE)

  • 查找图库里所有的 Employee
  • 使用 WHERE 从句,筛选出工资大于 10000 的人。
  • RETURN 他们的名字和工资。

任务四:狠心辞退 (DETACH DELETE)

  • 用 MATCH 找到老王。
  • 使用强制删除语句,把老王和他的工作关系一同从数据库中抹除。

恭喜通关!

你已经成功掌握了图数据库的基础 CRUD 操作!

做完测验的同学请举手示意,老师来检查代码。