📅  最后修改于: 2023-12-03 15:03:09.365000             🧑  作者: Mango
Neo4j是一个图数据库,它使用一种基于CQL(Cypher Query Language)的查询语言来执行操作和查询。 CQL是一种面向图形的查询语言,具有灵活的语法和强大的功能,使得开发人员可以轻松地从Neo4j数据库中检索信息。
我们可以使用CREATE
语句来创建节点。以下是创建节点的语法:
CREATE (variableName:labelName {propertyName:propertyValue})
其中,variableName
是我们要创建的节点的名称,labelName
是一个用于描述节点的标签,propertyName
和 propertyValue
是我们要为节点设置的属性名称和属性值。例如,要创建一个Person
节点并给它设置一个name
属性,我们可以使用以下语句:
CREATE (person:Person {name:"John Doe"})
我们可以使用CREATE
语句来创建节点之间的关系。以下是创建关系的语法:
MATCH (node1:label1 {propertyName1:propertyValue1}), (node2:label2 {propertyName2:propertyValue2})
CREATE (node1)-[variableName:relationshipType {propertyName:propertyValue}]->(node2)
其中,node1
和node2
是我们要创建关系的节点,propertyName
和propertyValue
是我们要为关系设置的属性名称和属性值,relationshipType
是关系的类型,variableName
是关系的名称。例如,要创建一个Person
节点与一个Company
节点之间的WORKS_FOR
关系,我们可以使用以下语句:
MATCH (person:Person {name:"John Doe"}), (company:Company {name:"Neo4j"})
CREATE (person)-[worksFor:WORKS_FOR {since:"2019"}]->(company)
我们可以使用MATCH
语句来查询节点和关系。以下是查询节点和关系的语法:
MATCH (variableName:labelName {propertyName:propertyValue})-[relationshipName:relationshipType {propertyName:propertyValue}]->(variableName:labelName {propertyName:propertyValue})
RETURN variableName, relationshipName
其中,variableName
是我们要查询的节点或关系的名称,propertyName
和propertyValue
是要匹配的属性名称和属性值,relationshipType
是关系的类型。例如,要查询所有Person
节点和它们连接的Company
节点,我们可以使用以下语句:
MATCH (person:Person)-[worksFor:WORKS_FOR]->(company:Company)
RETURN person, worksFor, company
我们可以使用WHERE
语句来对查询结果进行过滤。以下是筛选查询的语法:
MATCH (variableName:labelName)
WHERE variableName.propertyName = propertyValue
RETURN variableName
例如,要查询所有名字为John Doe
的Person
节点,我们可以使用以下语句:
MATCH (person:Person)
WHERE person.name = "John Doe"
RETURN person
我们可以使用COUNT
,SUM
,AVG
,MAX
,MIN
等函数进行聚合查询。以下是聚合查询的语法:
MATCH (variableName:labelName)
RETURN COUNT(variableName), SUM(variableName.propertyName), AVG(variableName.propertyName), MAX(variableName.propertyName), MIN(variableName.propertyName)
例如,要查询Person
节点的数量,我们可以使用以下语句:
MATCH (person:Person)
RETURN COUNT(person)
我们可以使用ORDER BY
语句对查询结果进行排序。以下是排序查询的语法:
MATCH (variableName:labelName)
RETURN variableName
ORDER BY variableName.propertyName ASC/DESC
其中,ASC
表示升序排列,DESC
表示降序排列。例如,要按名字对Person
节点进行升序排列,我们可以使用以下语句:
MATCH (person:Person)
RETURN person
ORDER BY person.name ASC
我们可以使用SKIP
和LIMIT
语句对查询结果进行分页。以下是分页查询的语法:
MATCH (variableName:labelName)
RETURN variableName
SKIP pageNumber * pageSize
LIMIT pageSize
其中,pageNumber
是要返回的页数,pageSize
是每页的大小。例如,要返回第2页的前10条Person
节点,我们可以使用以下语句:
MATCH (person:Person)
RETURN person
SKIP 1 * 10
LIMIT 10
本文介绍了Neo4j查询密码语言(CQL)的基础知识,包括创建节点和关系、查询节点和关系以及高级查询。 CQL是一种功能强大的查询语言,可用于从图形数据库中高效地检索信息,而且易于上手。