简介
像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。CQL代表Cypher查询语言。
Neo4j CQL
- Neo4j图形数据库的查询语言
- 一种声明性模式匹配语言
- 遵循SQL语法
常用Neo4j CQL命令
-
CREATE命令
-
创建没有属性的节点,即创建一个没有任何数据的节点
CREATE (<node-name>:<label-name>)
-
<node-name>
:创建的节点名称<label-name>
:节点标签名称- 注:不能使用node-name来访问节点详细信息,应使用此标签名称来访问节点详细信息
-
创建具有属性的节点,即创建一个具有一些属性(键值对)的节点来存储数据
CREATE ( <node-name>:<label-name> { <Property1-name>:<Property1-Value> ........ <Propertyn-name>:<Propertyn-Value> } )
-
<Property1-name>...<Propertyn-name>
:属性是键值对。 定义将分配给创建节点的属性的名称<Property1-value>...<Propertyn-value>
:属性是键值对。 定义将分配给创建节点的属性的值
-
-
MATCH命令
-
从数据库获取有关节点,关系和属性的数据
MATCH (<node-name>:<label-name>)
<node-name>
:节点名称<label-name>
:节点标签名称
-
注:不能单独使用 MATCH Command 从数据库检索数据。 如果我们单独使用它,那么我们将
InvalidSyntax
错误。MATCH 经常需要与其他的语句配合才可以使用。 -
MATCH (e: ‘Employee’) RETURN e
MATCH (e: “Employee”) RETURN e
MATCH (e: Employee) RETURN e
三个命令都相同,可以选择其中的任何一个
-
-
RETURN子句
-
用于检索属性
RETURN <node-name>.<property1-name>, ........ <node-name>.<propertyn-name>
<node-name>
:节点名称<Property1-name>...<Propertyn-name>
:属性是键值对,定义要分配给创建节点的属性的名称
-
注:不能单独使用RETURN子句
-
-
MATCH & RETURN匹配和返回
MATCH Command RETURN Command
-
CREATE+MATCH + RETURN命令
-
-
CREATE创建标签
-
单个标签到节点
CREATE (<node-name>:<label-name>)
-
多个标签到节点
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)
<label-name1>:<label-name2>….:<label-namen>
:节点的标签名称的列表。
-
单个标签到关系
CREATE (<node1-name>:<label1-name>)-[<relationship-name>:<relationship-label-name>]->(<node2-name>:<label2-name>)
<node1-name>
:From节点的名称<node2-name>
:To节点的名称<label1-name>
:From节点的标签名称<label2-name>
:To节点的标签名称<relationship-name>
:关系的名称<relationship-label-name>
:关系的标签名称
-
注:Neo4j中的节点标签,基本等同于关系数据库中的table表名,或者说是一个类别。但是跟table不同的是,这里节点很方便的有多个标签: (n:Person :User)。也可以将节点名
-
-
WHERE子句
-
简单WHERE子句
WHERE <condition>
-
复杂WHERE子句
WHERE <condition> <boolean-operator> <condition>
-
<condition>
语法<property-name> <comparison-operator> <value>
<property-name>
:节点或关系的属性名称<comparison-operator>
:比较运算符之一<value>
:一个字面值,如数字文字,字符串文字等
-
Neo4j CQL中的布尔运算符
AND,OR,NOT,XOR
-
Neo4j CQL中的比较运算符
=,>,<,<=,>=,<>(“不等于”运算符)
-
-
DELETE删除
-
DELETE节点子句语法
DELETE <node-name-list>
<node-name-list>
:要从数据库中删除的节点名称列表
-
DELETE节点和关系子句语法
DELETE <node1-name>,<node2-name>,<relationship-name>
<node1-name>
:用于创建关系的一个起始节点名称<node2-name>
:用于创建关系的另一个节点名称<relationship-name>
:在和之间创建的关系名称
-
-
REMOVE删除
DELETE REMOVE 主要区别 用于删除节点和关联关系 用于删除标签和属性 相似性 两个命令都应该与MATCH命令一起使用 -
删除节点/关系的属性
REMOVE <property-name-list>
-
<property-name-list>
:属性名列表,用于永久性地从节点或关系中删除它 -
<property-name-list>
属性名列表语法<node-name>.<property1-name>, <node-name>.<property2-name>, .... <node-name>.<propertyn-name>
-
-
删除节点/关系的标签
REMOVE <label-name-list>
-
<label-name-list>
:标签列表,用于永久性地从节点或关系中删除它 -
<label-name-list>
语法<node-name>:<label2-name>, .... <node-name>:<labeln-name>
-
-
-
SET子句
-
向现有节点或关系添加新属性
-
添加或更新属性值
-
语法
SET <node-label-name>.<property1-name>, <node-label-name>.<property2-name>, .... <node-label-name>.<propertyn-name>
-
-
ORDER BY排序
-
MATCH查询返回的结果进行排序,可以按升序或降序对行进行排序。
-
默认情况下,按升序进行排序。 如果要按降序排序,需要使用DESC子句。
-
语法
ORDER BY <node-name>.<property1-name>, <node-name>.<property2-name>, .... <node-name>.<propertyn-name> [DESC]
-