Neo4j 常用语法汇总 CQL
### Neo4j常用CQL语法知识点汇总 #### 一、关系查询与创建 在Neo4j中,通过Cypher查询语言(CQL)可以轻松地进行节点和关系的查询及创建。以下是一些常见的操作: ##### 1. 查询特定关系 - **基本查询**:查询两个已知节点之间的关系。 ```cypher MATCH (n:Data {name: "一些数据"})-[:包含]->(m:Data {name: "aaaa"}) RETURN m, n ``` - **查询并创建关系**:如果关系不存在,则创建一个新的关系。 ```cypher MATCH (n:Data {name: '数据'}), (m:BigData {name: '大数据'}) CREATE (n)-[:rel]->(m) ``` - **查询特定类型的双向关系**:查询两个节点之间指定类型的关系。 ```cypher MATCH p = (n:Data {name: '数据'})-->(m:Data {name: '数据1'}) RETURN p ``` - **查询带有别名的关系**:使用别名可以让查询更加清晰。 ```cypher MATCH p = (n:Data {name: '数据'})-[role:包含]->(m:Data {name: '数据1'}) RETURN p ``` ##### 2. 创建新的关系 - **根据已有节点创建新关系**:可以在查询的同时创建新关系。 ```cypher MATCH (n:Data {name: 'qqq'}) CREATE (m:Data {name: 'qq'}) CREATE (n)-[:包含]->(m) ``` - **创建新节点和关系**:同时创建多个新节点,并建立它们之间的关系。 ```cypher CREATE (n:Data {name: '一些数据1', long: 2000}), (m:Data {name: '一些数据2', long: 222000}) ``` - **为新关系添加属性**:创建新关系时可以同时为其设置属性。 ```cypher MATCH (n:BigData {name: '数据分析'}), (m:Data {name: 'QQQ'}) CREATE (n)-[r:关联 {roles: ['www']}]->(m) RETURN n, m, r ``` ##### 3. 访问特定类型的关系 - **查询特定类型的关系**:查询所有指定类型的关系。 ```cypher MATCH p = ()-[r:rel]->() RETURN p ``` - **查询关系的类型**:获取特定节点与其他节点之间的关系类型。 ```cypher MATCH (n:Data)-[r]->(m:Data) RETURN n.name, m.name, type(r) ``` - **查询特定节点下的所有关系**:查找某个特定节点的所有连接。 ```cypher MATCH (:Data {name: 'QQQ'})-[r:包含]->(Data) RETURN Data ``` #### 二、高级查询技巧 ##### 1. 条件查询 - **基于条件的查询**:根据特定条件过滤结果。 ```cypher MATCH (n:BigData)-->(m:Data) WHERE n.name = '数据分析' RETURN n, m ``` - **聚合函数**:使用`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`等聚合函数。 ```cypher MATCH (n:BigData)-->(m:Data {name: 'QQQ'}) WHERE '数据分析' IN n.name RETURN n, m, COUNT(*) AS c ORDER BY c DESC SKIP 0 LIMIT 1 ``` - **CASE语句**:基于不同条件返回不同的值。 ```cypher MATCH (n:BigData) RETURN CASE n.name WHEN '数据分析' THEN 1 WHEN 'brown' THEN 2 ELSE 3 END AS result ``` ##### 2. 关系模式匹配 - **模式匹配**:使用正则表达式和其他模式来匹配关系。 ```cypher MATCH (user)-[:friend]->(follower) WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*' RETURN user.name, follower.name ``` #### 三、其他操作 ##### 1. 查询所有信息 - **查询所有信息**:简单地查询数据库中的所有信息。 ```cypher MATCH (q) RETURN q ``` - **查询节点ID**:获取特定节点的ID。 ```cypher MATCH (n:Data) RETURN id(n) ``` ##### 2. 修改操作 - **更新节点属性**:更改现有节点的属性。 ```cypher MATCH (n:Data {name: '一些数据1'}) SET n.name = '数据1' ``` - **删除节点及其关系**:使用`DETACH DELETE`来删除节点及其所有相关关系。 ```cypher MATCH (n:Person {name: 'Andres'}) DETACH DELETE n ``` - **删除关系**:仅删除特定的关系。 ```cypher MATCH (a:Person)-[r:Follow]->(b:Person) WHERE a.name = 'Andres' AND b.name = ' ``` 以上总结了Neo4j中常用的CQL语法,包括关系查询、创建、修改、删除以及一些高级查询技巧。这些知识点可以帮助开发者高效地管理和操作图数据库中的数据。