Neo4j的Cypher Query Language(CQL)是专门为图数据库设计的查询语言,其语法类似于SQL,但是专门用于描述和查询图数据。以下是一些常见的Cypher查询示例和用法,包括创建数据、查询数据、更新数据和删除数据的操作。
1. 创建节点和关系
创建单个节点:
1 2 3 | CREATE (node:Label {property: value}) CREATE (n:Person {name: 'Alice' , age: 30})CREATE (c:Company {name: 'xx公司' }) |
在这个例子中,我们创建了一个具有两个属性(name
和age
)的Person
节点。
创建两个节点之间的关系:
1 2 3 | MATCH (node1:Label1), (node2:Label2) WHERE node1.property = value1 AND node2.property = value2 CREATE (node1)-[:RELATIONSHIP_TYPE]->(node2)<br><br>MATCH (n:Person {name: 'Alice' , age: 30}), (c:Company {name: 'xx公司' }) <br>CREATE (n)-[:WORKS_FOR]->(c)<br><br> |
2. 查询数据
查询所有Person
节点:
1 2 | MATCH (p:Person) RETURN p |
查询特定属性的节点:
1 2 | MATCH (p:Person {name: 'Alice' }) RETURN p |
查询具有特定关系的节点:
1 2 3 | MATCH (p:Person)-[:FRIENDS_WITH]->(friend) WHERE p.name = 'Alice' RETURN friend |
这里我们返回了所有与名为Alice的人是朋友的节点。
3. 更新数据
更新节点属性:
1 2 3 | MATCH (p:Person {name: 'Alice' }) SET p.age = 31 RETURN p |
这里我们将名为Alice的Person
的年龄更改为31。
添加关系:
1 2 3 | MATCH (a:Person), (b:Person) WHERE a.name = 'Alice' AND b.name = 'Bob' CREATE (a)-[:FRIENDS_WITH]->(b) |
这里我们在Alice和Bob之间创建了一个新的FRIENDS_WITH
关系。
4. 删除数据
删除一个没有关系的节点:
1 2 | MATCH (n:Person {name: 'Alice' }) DELETE n |
删除一个节点和它的所有关系:
1 2 | MATCH (n:Person {name: 'Alice' }) DETACH DELETE n |
DETACH DELETE
语句将删除节点及其所有关系
5. 复杂查询
使用多个匹配和条件:
1 2 3 4 | MATCH (a:Person {name: 'Alice' }) MATCH (b:Person {name: 'Bob' }) MATCH (a)-[r:FRIENDS_WITH]-(b) RETURN r |
这里我们查询Alice和Bob之间是否存在朋友关系,并返回这个关系。
聚合和排序:
1 2 3 | MATCH (p:Person) RETURN p.name, COUNT(p) as num_friends ORDER BY num_friends DESC |
这个查询返回每个人的名字和他们朋友的数量,并按朋友数量降序排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
2023-02-23 2023/2/24 再次安装darknet
2023-02-23 源
2023-02-23 apt和pip