1.核心定位
| 语言 | 数据模型 | 核心用途 | 一句话总结 |
|---|---|---|---|
| SQL | 关系型数据库(表/行/列) | 通用业务数据查询 | 最常用,查表格数据 |
| Cypher | 图数据库(节点/关系/属性) | 社交、知识图谱、关系挖掘 | 专门查「谁和谁有关系」 |
| SPARQL | RDF 语义网(三元组) | 标准化语义数据、开放知识图谱 | 互联网标准语义查询 |
| Datalog | 逻辑推理(规则/递归) | 数据推理、规则引擎、递归查询 | 用「规则」推导数据 |
2. 详细对比(核心差异)
① SQL(结构化查询语言)
- 数据结构:二维表(行+列,如 MySQL、PostgreSQL)
- 擅长:增删改查、聚合、分组、连接多表
- 语法特点:
SELECT ... FROM ... WHERE ... - 场景:电商订单、用户信息、财务系统、几乎所有后端业务
- 示例:查询年龄大于18的用户
SELECT name FROM users WHERE age > 18;
② Cypher(图查询语言)
- 数据结构:节点 + 关系(如 Neo4j)
- 擅长:深度关系查询、路径查找、推荐系统、风控关联分析
- 语法特点:用
()表示节点,-[]->表示关系,像画图一样写查询 - 场景:社交好友推荐、知识图谱、金融反欺诈、物流路径
- 示例:查找「张三」的朋友
MATCH (a:Person{name:"张三"})-[:FRIEND]->(b) RETURN b.name;
③ SPARQL(语义网查询语言)
- 数据结构:RDF 三元组(主语-谓语-宾语)
- 擅长:标准化语义数据、跨数据集关联、开放知识图谱(Wikidata)
- 语法特点:类似 SQL,但基于三元组匹配
- 场景:学术数据、开放语义数据、AI 知识图谱
- 示例:查询张三的年龄
SELECT ?age WHERE {
<张三> <年龄> ?age .
FILTER(?age > 18)
}
④ Datalog(逻辑查询语言)
- 数据结构:事实 + 规则
- 擅长:递归推理、规则推导(比 SQL 递归更简单)
- 语法特点:逻辑式写法,
结论 :- 条件 - 场景:数据血缘、权限校验、程序分析、AI 规则引擎
- 示例:定义祖先规则
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
3. 怎么选?(直接照抄)
- 普通业务数据 → 必选 SQL(90% 场景都用它)
- 关系复杂、要查路径/图谱 → 选 Cypher(图数据库首选)
- 标准化语义网、开放知识图谱 → 选 SPARQL
- 需要规则推理、递归逻辑 → 选 Datalog
4. 极简语法对比(同一需求:查朋友)
-- SQL(多表连接)
SELECT b.name FROM users a
JOIN friends f ON a.id = f.user_id
JOIN users b ON f.friend_id = b.id
WHERE a.name = '张三';
-- Cypher(直观关系)
MATCH (a:Person{name:"张三"})-[:FRIEND]->(b) RETURN b.name;
-- SPARQL(三元组)
SELECT ?b WHERE {
?a <姓名> "张三" .
?a <朋友> ?b .
}
-- Datalog(规则)
friend("张三", Y) :- friend("张三", Y).
总结
- SQL = 表格数据之王,通用必备
- Cypher = 图关系神器,最易读的图查询
- SPARQL = 语义网标准,三元组专用
- Datalog = 逻辑推理之王,规则递归最强
注意:本文归作者所有,未经作者允许,不得转载