neo4j基础


什么是 Cypher?

Cypher 是 Neo4j 的声明式图形查询语言。它由 Neo4j 工程师于 2011 年创建,是一种与 SQL 相当的图形数据库语言。与 SQL 类似,Cypher 让用户专注于从图形中检索什么,而不是如何检索。因此,Cypher 允许用户通过高效且富有表现力的查询来揭示以前未知的数据连接和集群,从而使用户能够充分发挥其属性图形数据库的潜力。

Cypher 提供了一种可视化的模式和关系匹配方法。它依赖于以下 ASCII 类型的语法: (nodes)-[:CONNECT_TO]→(otherNodes)。圆括号用于圆形节点,圆括号-[:ARROWS]→用于关系。编写查询实际上就像通过图形中的数据绘制图案一样。换句话说,节点等实体及其关系以可视化方式构建到查​​询中。这使得 Cypher 成为一种高度直观的语言,无论是阅读还是编写。

Cypher 和 SQL:主要区别

Cypher 和 SQL 在许多方面都很相似。例如,它们共享许多相同的关键字,例如WHEREORDER BY。但是,两者之间存在一些重要差异:

Cypher 具有模式灵活性

虽然使用索引和约束来强制执行部分架构是可能的,也是建议的,但 Cypher 和 Neo4j 提供了比 SQL 和关系数据库更高程度的架构灵活性。更具体地说,Neo4j 数据库中的节点和关系不必设置特定属性,因为同一图中的其他节点或关系具有该属性(除非对该特定属性创建了存在约束)。这意味着用户不需要使用固定的架构来表示数据,他们可以随着图表的发展添加新的属性和关系。

查询订单

SQL 查询以用户想要返回的内容开头,而 Cypher 查询以 return 子句结尾。例如,考虑以下两个查询(均在数据库中搜索评分大于 7 的电影标题),第一个查询使用 SQL 编写,第二个查询使用 Cypher 编写:

SELECT movie.name
FROM movie
WHERE movie.rating > 7
MATCH (movie:Movie)
WHERE movie.rating > 7
RETURN movie.title

Cypher 查询更简洁

由于其直观、类似白板的子句构造方法,Cypher 查询通常比其等效的 SQL 查询更简洁。例如,考虑以下两个查询(均在数据库中搜索电影《黑客帝国》中演员的姓名),第一个查询用 SQL 编写,第二个查询用 Cypher 编写:

SELECT actors.name
FROM actors
 	LEFT JOIN acted_in ON acted_in.actor_id = actors.id
	LEFT JOIN movies ON movies.id = acted_in.movie_id
WHERE movies.title = "The Matrix"
MATCH (actor:Actor)-[:ACTED_IN]->(movie:Movie {title: 'The Matrix'})
RETURN actor.name

Cypher 和 APOC

Neo4j 支持 APOC(Awesome Procedures on Cypher)核心库。APOC 核心库提供对用户定义过程和函数的访问,这些过程和函数将 Cypher 查询语言的使用扩展到数据集成、图形算法和数据转换等领域。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪 www.enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值