一 什么是图数据库
图数据库属于NoSQL数据库的一个分支,是专门为存储、建模和查询实体间关联关系而设计的数据库,核心基于图结构的数据模型:
- 节点(Vertex):表示现实中的实体,比如用户、商品、设备、地点等,每个节点可以包含多个属性来描述自身特征。
- 边(Edge):表示两个节点之间的关联关系,比如用户"购买了"商品、用户"是好友"、公司"担保了"另一家公司,边同样可以附加属性(比如购买时间、担保金额等)。
图论〔Graph Theory〕是数学的一个分支。它以图为研究对象图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。
二 图数据库 vs 关系数据库(核心差异)
1. 模型: 图数据库用 节点-边; 关系库用 表 – 行 – 外键。
2. 关系存储:图数据库原生存关系;关系库靠JOIN动态计算。
3. 多跳查询(如 “好友的好友”):图数据库遍历快、线性成本;关系库多表 JOIN、指数级变慢。
4. ** schema**:图数据库无 schema / 弱 schema;关系库强 schema、改结构麻烦。
Schema 可以理解为数据的 “格式规矩、表结构、字段定义”。
5. 典型场景:图数据库适合关系密集型;关系库适合结构化、简单关联。
三 核心技术特点与优势
四 主流产品
Neo4j:最流行、生态好、Cypher 语言易用,桌面版 + 企业版。
TigerGraph:分布式、超大规模、高并发,适合金融风控。
ArangoDB:多模型(图 + 文档 + 键值),灵活通用。
OrientDB:老牌多模,兼容图与关系模型。
五, Neo4j 使用
桌面版下载使用:
访问官网下载页:https://neo4j.com/download/ 填姓名、邮箱,下载对应系统安装包(Windows .exe / macOS .dmg)。
安装过程: 一路next 就行
| 节点 (Node) | 现实中的实体(人、商品、账号、电影),图中就是圆圈 | (张三) |
| 关系 (Relationship) | 实体之间的联系(好友、购买、观看),图中就是带箭头的线 | (张三)-[好友]->(李四) |
| 属性 (Property) | 节点 / 关系的描述信息(姓名、年龄、时间),键值对格式 | {name:"张三",age:25} |
1. 创建第一个数据库实例

创建实例成功后会自动启动实例,如果没有成功启动手动start启动
如果启动后黑窗口闪退,大概率是目录中有中文
原因:
Neo4j 底层 JDK 读取中文路径会编码崩溃,表现为:启动实例后 PowerShell 窗口一闪而过、RUNNING 状态自动停止。
解决方法:
退出软件,建英文文件夹,配置环境变量
- 变量名:NEO4J_DESKTOP_DATA_PATH
- 变量值:D:\\Neo4jData
如果不想配环境变量可以使用 符号链接映射(类似软链接)
管理员运行cmd
mklink /J "C:\\目录名称\\.Neo4jDesktop2" "D:\\Neo4jData\\.Neo4jDesktop2"
- Neo4j 的 DBMS ≈ MySQL 服务进程
- Neo4j 里每个 Database(neo4j/mydatabase) ≈ MySQL 里一个 Schema 数据库
- system 库是 Neo4j 专属系统库,MySQL 无对应概念

http://localhost:7474 图形化终端主要编写cypher代码的位置

cypher语法中的操作
1:创建【节点】(实体)
语法:CREATE (标签 {属性})
- 标签:用 : 开头,相当于「分类 / 表名」
- 属性:键:值 格式,多个属性用逗号分隔
CREATE (:User {name:"张三", age:22, sex:"男"}),
(:User {name:"李四", age:24, sex:"女"})
2. 查询【节点】(MATCH 核心语法)
MATCH = 匹配数据(对应 SQL 的 SELECT)
查询所有User节点
MATCH (u:User)
RETURN u.name, u.age, u.sex
按条件查询(WHERE 过滤)
MATCH (u:User)
WHERE u.age = 22
RETURN u.name, u.age
3.创建【关系】(节点之间连线)
关系格式:(节点1)-[:关系类型 {属性}]->(节点2)
- 箭头代表方向
- 关系也可以加属性(比如关系建立时间)
示例:给两个用户添加「好友」关系
MATCH (a:User{name:"张三"}), (b:User{name:"李四"})
CREATE (a)-[:FRIEND {create_time:"2026-06-15"}]->(b)
4:多跳查询(好友关系实战)
1 跳查询:张三的直接好友
MATCH (a:User{name:"张三"})-[:FRIEND]->(f)
RETURN f.name
2 跳查询:张三「好友的好友」(核心多跳演示)
MATCH (a:User{name:"张三"})-[:FRIEND*2]->(f)
RETURN DISTINCT f.name
修改 / 删除 属性 & 关系
给张三添加手机号:
MATCH (u:User{name:"张三"})
SET u.phone = "13800001111"
删除张三的手机号:
MATCH (u:User{name:"张三"})
REMOVE u.phone
删除张三和李四的好友关系:
MATCH (a:User{name:"张三"})-[r:FRIEND]->(b:User{name:"李四"})
DELETE r
典型应用场景
图数据库的价值在高度依赖关系分析的场景中体现尤为明显:
