Neo4j Cypher 查询语言
Neo4j 数据库是图数据库中最受欢迎的选择之一。其原因之一是它强大的查询语言 Cypher。Neo4j 开发了自己的查询语言 Cypher,它与 SQL 不同,它操作的是节点而不是表、行和列。它的语法类似于 SQL,但更适合处理图数据。这是因为 Neo4j 是一个图数据库,它将数据存储在节点和关系中,可以以图形格式而不是传统的表格格式进行可视化。
在本文中,我们将讨论 Cypher、它的重要性和各种示例。
介绍
Cypher 是一种声明式查询语言。它允许您查询图数据库,例如 Neo4j。它已成为使用 Neo4j 的首选语言。Cypher 易于学习和使用,即使对于以前没有图数据库经验的人也是如此。
Cypher 重要的原因有很多。它允许以简单直观的方式进行复杂的图查询。Cypher 设计为可扩展的。Cypher 对性能进行了高度优化。
语法
使用 Cypher 查询 Neo4j 数据库相对简单。Cypher 查询的基本语法如下:
MATCH (n) WHERE ... RETURN ...
`MATCH` 关键字用于指定图中匹配的节点和关系模式。
`WHERE` 子句用于根据特定条件过滤结果。
`RETURN` 关键字用于指定查询返回的数据。
示例-1
例如,以下 Cypher 查询将查找图中所有具有标签“Person”的节点,并返回其姓名和年龄。
MATCH (p:Person) RETURN p.name, p.age
Cypher 还支持各种函数和运算符。这些允许我们以各种方式操作和分析图数据。一些常见的示例包括:
`COUNT` 返回匹配特定模式的节点或关系的数量
`ORDER BY` 根据指定的属性或表达式对查询结果进行排序
`DISTINCT` 只返回唯一结果
`LIMIT` 限制查询返回的结果数量
示例-2
为了说明 Neo4j 的 Cypher 和 SQL 之间的区别,请考虑以下示例。下面的 Cypher 语句使用变量“G”保存返回的数据,检索“name”属性设置为“TutorialsPoint”的“Company”节点。
MATCH (G:Company { name:"TutorialsPoint" })
RETURN G
相反,等效的 SQL 查询将是
SELECT * FROM Company WHERE name = "TutorialsPoint";
Neo4j 被设计为 NoSQL 数据库。它也可以有效地与关系数据库一起使用。但是,Neo4j 的查询语言不使用 SQL。它依赖于 Cypher 语言来与其基于图的数据模型交互。
ASCII 艺术语法
Neo4j 使用 ASCII 艺术语法来表示其图数据模型中的模式。节点由括号“( )”表示,节点之间的关系由“->”表示。要指定关系类型,可以使用方括号“[]”,后跟一个标签。例如,模式“(X)-[:TutorialsPoint]->(Y)”表示两个节点 X 和 Y 之间类型为“TutorialsPoint”的关系。
定义数据
Neo4j 中的节点带有标签,这有助于定义它们表示的值的类型。标签可以是任何内容,从“Person”到“Employee”或“Employer”。
节点还可以具有诸如“name”、“employee_id”和“phone_number”之类的属性。这些提供了附加信息。
Neo4j 中的关系也可以具有属性,但这并非必需。
节点之间的关系由其连接的性质定义,例如“X 为 TutorialsPoint 工作”。这种关系可以用 Cypher 语言表示为 (X)-[:WORK]->(TutorialsPoint)。
在示例查询“MATCH (G:Company { name:"TutorialsPoint" }) RETURN G”中,“Company”是节点的标签,“name”是其属性之一。该查询检索标记为“Company”且名称为“TutorialsPoint”的节点。
结论
Cypher 允许查询和分析 Neo4j 数据库中的图数据。Cypher 是使用图数据库的重要工具。
我们讨论了 Neo4j(一种流行的图数据库)中使用的 Cypher 查询语言。Cypher 是一种声明式语言,它操作节点和关系。它允许以直观的方式进行复杂的查询。语法包括 MATCH、WHERE 和 RETURN 等关键字。Cypher 支持各种函数和运算符,例如 COUNT 和 ORDER BY,并且可以用于操作和分析图数据。Neo4j 的 ASCII 艺术语法表示其图数据模型中的模式。节点带有标签,关系可以具有属性。Cypher 对性能进行了优化,并允许扩展。总的来说,Cypher 是查询和分析 Neo4j 数据库中图数据的重要工具。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP