Neo4j的Cypher Query Language(CQL)是专门为图数据库设计的查询语言,其语法类似于SQL,但是专门用于描述和查询图数据。以下是一些常见的Cypher查询示例和用法,包括创建数据、查询数据、更新数据和删除数据的操作。

 

1. 创建节点和关系

创建单个节点:

CREATE (node:Label {property: value})

CREATE (n:Person {name: 'Alice', age: 30})
CREATE (c:Company {name: 'xx公司'})

在这个例子中,我们创建了一个具有两个属性(nameage)的Person节点。

创建两个节点之间的关系:

MATCH (node1:Label1), (node2:Label2)
WHERE node1.property = value1 AND node2.property = value2
CREATE (node1)-[:RELATIONSHIP_TYPE]->(node2)

MATCH (n:Person {name: 'Alice', age: 30}), (c:Company {name: 'xx公司'})
CREATE (n)-[:WORKS_FOR]->(c)

 

2. 查询数据

查询所有Person节点:

MATCH (p:Person)
RETURN p

查询特定属性的节点:

MATCH (p:Person {name: 'Alice'})
RETURN p

查询具有特定关系的节点:

MATCH (p:Person)-[:FRIENDS_WITH]->(friend)
WHERE p.name = 'Alice'
RETURN friend

这里我们返回了所有与名为Alice的人是朋友的节点。

3. 更新数据

更新节点属性:

MATCH (p:Person {name: 'Alice'})
SET p.age = 31
RETURN p

这里我们将名为Alice的Person的年龄更改为31。

添加关系:

MATCH (a:Person), (b:Person)
WHERE a.name = 'Alice' AND b.name = 'Bob'
CREATE (a)-[:FRIENDS_WITH]->(b)

这里我们在Alice和Bob之间创建了一个新的FRIENDS_WITH关系。

 

4. 删除数据

删除一个没有关系的节点:

MATCH (n:Person {name: 'Alice'})
DELETE n

删除一个节点和它的所有关系:

MATCH (n:Person {name: 'Alice'})
DETACH DELETE n

DETACH DELETE语句将删除节点及其所有关系

5. 复杂查询

使用多个匹配和条件:

MATCH (a:Person {name: 'Alice'})
MATCH (b:Person {name: 'Bob'})
MATCH (a)-[r:FRIENDS_WITH]-(b)
RETURN r

  

这里我们查询Alice和Bob之间是否存在朋友关系,并返回这个关系。

聚合和排序:

MATCH (p:Person)
RETURN p.name, COUNT(p) as num_friends
ORDER BY num_friends DESC

这个查询返回每个人的名字和他们朋友的数量,并按朋友数量降序排序。

posted on 2024-02-23 10:30  黑逍逍  阅读(5)  评论(0编辑  收藏  举报