3、Neo4j 安装与入门:Neo4j Desktop 安装、Cypher 基础语法、节点与关系的创建

好,咱们正式开始动手了。前面聊了那么多图数据库的理论,说白了,今天就是要把 Neo4j 装到你的电脑上,然后亲手敲几行 Cypher 语句,感受一下“图”到底是怎么存数据的。

我个人习惯,学任何新工具,第一件事不是看文档,而是先跑起来。哪怕只是创建一个节点,那种“我能控制它了”的感觉,比看十页理论都管用。咱们今天就按这个路子来。

3.1 Neo4j Desktop 安装:别怕,就是装个软件

Neo4j 的安装方式有好几种,有社区版、企业版,还有 Docker 镜像。但对于咱们学习和做原型验证,Neo4j Desktop 是最省心的选择。它自带了一个图形化管理界面,还能方便地管理多个数据库项目。

安装步骤其实很简单:

  1. 去官网(neo4j.com/download)下载对应你操作系统的 Desktop 版本。
  2. 双击安装,一路默认选项就行。嗯,这里要注意,它会要求你注册一个账号,这是免费的,注册一下就好。
  3. 安装完成后,打开 Desktop,你会看到一个干净的主界面。点击 “New Project”,给你的第一个图数据库项目起个名字,比如 “FinanceDemo”。
  4. 在项目里,点击 “Add” → “Local DBMS”,设置一个数据库密码。这个密码很重要,以后连接数据库都要用它。我建议设成 “123456” 这种简单密码,学习阶段别为难自己。
  5. 点击 “Start” 按钮,等几秒钟,数据库就启动了。你会看到状态变成绿色的小圆点,旁边显示 “Active”。
小提示: 启动后,点击 “Open” 按钮,会打开 Neo4j Browser,这是一个网页版的查询编辑器。咱们后面写 Cypher 语句,主要就在这里敲。

我曾经遇到过一个问题:启动后 Browser 页面一片空白。后来发现是端口被占用了。解决办法很简单,在 Desktop 的 DBMS 设置里,把 HTTP 端口从 7474 改成 7475 就行。这种小坑,遇到了别慌。

3.2 Cypher 基础语法:图数据库的 SQL

Cypher 是 Neo4j 的查询语言。你如果写过 SQL,会觉得它很亲切,但又有那么点不一样。它不是为了查“表”设计的,而是为了描述“图”中的路径和模式。

核心语法就几个:

  • CREATE:创建节点或关系。
  • MATCH:匹配(查询)已有的模式。
  • RETURN:返回查询结果。
  • WHERE:添加过滤条件。
  • DELETE:删除节点或关系。

你想想看,在 SQL 里你要查一个用户,得写 SELECT * FROM users WHERE id = 1。在 Cypher 里,你描述的是“我要找一个标签为 User 的节点,它的 id 属性是 1”。

它的语法非常直观,用圆括号 () 表示节点,用方括号 [] 表示关系,用箭头 --> 表示方向。比如:

(a:Person) - [:KNOWS] -> (b:Person)

这句话读出来就是:“一个标签为 Person 的节点 a,通过一个类型为 KNOWS 的关系,指向另一个标签为 Person 的节点 b”。是不是很自然?

3.3 节点与关系的创建:亲手画一张图

理论讲完了,咱们来点实际的。假设我们要为一个简单的金融场景建模:一个客户(Customer)有一个账户(Account),账户发生了交易(Transaction)。

第一步:创建节点

打开 Neo4j Browser,在输入框里敲入以下命令:

CREATE (c:Customer {name: '张三', age: 35, risk_level: '低'})
CREATE (a:Account {account_id: 'ACC001', balance: 100000.00, type: '储蓄'})
CREATE (t:Transaction {tx_id: 'TX001', amount: 5000.00, timestamp: datetime('2024-01-15T10:30:00')})

敲完回车,你会看到 Browser 提示 “Created 3 nodes”。这就创建了三个孤立的节点,它们之间还没有任何联系。

这里有个细节:: 后面的 “Customer”、“Account” 是节点的标签,相当于关系数据库里的表名。花括号 {} 里的是属性,相当于表的字段。

第二步:创建关系

节点之间没有关系,那就不是图。咱们来把它们连起来:

MATCH (c:Customer {name: '张三'})
MATCH (a:Account {account_id: 'ACC001'})
MATCH (t:Transaction {tx_id: 'TX001'})
CREATE (c) - [:HAS_ACCOUNT] -> (a)
CREATE (a) - [:HAS_TRANSACTION] -> (t)

这段代码的意思是:先找到刚才创建的三个节点,然后创建两条关系。一条是 “客户拥有账户”,另一条是 “账户发生交易”。

运行后,你会在 Browser 的图形化界面里看到三个小圆点被箭头连起来了。那种感觉,就像你亲手画了一张网络图,很有成就感。

核心要点: 在 Cypher 里,关系必须要有方向(虽然查询时可以忽略方向),而且关系也可以有属性。比如,你可以在 [:HAS_ACCOUNT] 上加一个 {since: date('2023-01-01')} 来表示开户时间。

3.4 避坑指南:我踩过的几个雷

刚开始学 Cypher,有几个地方特别容易出错。我把自己踩过的坑分享给你:

  • 忘记 MATCH 直接 CREATE 关系: 如果你写 CREATE (a)-[:KNOWS]->(b),而 a 和 b 节点不存在,它会帮你创建两个新节点。这往往不是你想要的。所以,创建关系前,一定要先用 MATCH 找到已有节点。
  • 属性值类型搞混: Cypher 对类型敏感。数字不要加引号,字符串必须加引号。比如 age: 35 是对的,age: '35' 就变成了字符串。
  • 忘记分号: 虽然 Browser 里不写分号也能运行,但多条语句一起执行时,分号是必须的。我习惯每条语句都加分号,养成好习惯。
重要提醒: 在生产环境中,千万不要用 CREATE 语句直接创建大量数据。它没有去重逻辑,跑两次就会创建两份重复数据。正确的做法是用 MERGE 语句,它会先检查节点是否存在,不存在才创建。

3.5 本章知识体系一览

为了让你对整个安装和入门流程有个全局印象,我画了一张图。它把咱们今天讲的核心步骤串了起来:

Neo4j 安装与入门 · 知识结构图 1. 安装 Neo4j Desktop 下载 → 注册 → 创建项目 2. 启动数据库 Start → Active → Open Browser 3. Cypher 基础语法 CREATE / MATCH / RETURN 4. 节点与关系创建 CREATE 节点 → MATCH 查找 → CREATE 关系 5. 可视化验证 Browser 图形界面展示节点与关系 核心流程:安装 → 启动 → 写 Cypher → 创建数据 → 验证

这张图把咱们今天的流程串起来了。从安装 Desktop,到启动数据库,再到写 Cypher 语句创建节点和关系,最后在 Browser 里看到图形化的结果。每一步都环环相扣。

好了,今天的实操就到这里。你现在应该已经有一个能跑起来的 Neo4j 环境,并且亲手创建了几个节点和关系。别小看这几步,这是你进入图数据库世界的第一块基石。多敲几遍,把 CREATEMATCH 的手感练出来,后面学复杂查询就轻松多了。


专注资料整理