cypher语言学习
create 命令
CREATE (
<node-name>:<label-name> # 通过标签创建节点
{ # 属性 key-value形式
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
p.s: 一个节点可以有多个标签,标签之间用:分隔
match 命令
用途:
- 从数据库获取有关节点和属性的数据
- 从数据库获取有关节点,关系和属性的数据
MATCH
(
<node-name>:<label-name> # node-name是节点的别名
)
p.s. match命令需要和return联合使用
return命令
用途:
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
return <node-name>
return <node-name>.<property1_name>,<node-name>.<property2_name>
where子句
WHERE <condition> <boolean-operator> <condition> # 其中布尔运算符包含and, or, not, xor
WHERE <property-name> <comparison-operator> <value> # 比较运算符包括=, <>, <, >, <=, >=
使用where子句创建关系
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
{<relationship-properties>}]->(<node2-label-name>)
delete命令
可以从数据库永久删除节点及其关联的属性
delete <node-name-list> # 使用(,)运算符来分隔节点名
p.s. delete命令不单独使用,跟match共同使用,先match出相应的记录,然后删除
remove命令
用途:
- 删除节点或关系的标签
- 删除节点和标签的属性
与delete命令的区别:delete用于删除节点和关联关系,remove用于删除标签和属性
remove <node-name>.<property1-name>, <node-name>.<propertyn-name> # 删除属性名称列表
remove <node-name>:<label2-name>, <node-name>:<labeln-name> # 删除标签名称列表
p.s. remove命令也不单独使用,要跟match一起使用
set命令
用途
- 向现有节点或关系添加新属性
- 添加和更新属性值
SET <node-label-name>.<property1-name>, <node-label-name>.<property2-name>
order by命令
ORDER BY <property-name-list> [DESC] # 默认情况下是升序排序ASC
union命令
将两组结果中的公共行组合并返回到一组结果中。其中结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。
<MATCH Command1>
UNION
<MATCH Command2>
p.s. 查询不返回相同的数据
limit命令和skip命令
limit <num> # 限制查询返回的结果的行数,返回num行数据
skip <num> # 跳过查询结果的前num行返回后面的结果
merge命令
merge命令是create命令和match命令的组合
MERGE (<node-name>:<label-name>
{
<Property1-name>:<Pro<rty1-Value>
.....
<Propertyn-name>:<Propertyn-Value>
})
p.s. MERGE命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。也就是先检查一下现有数据库中含不含该节点,如果不包含则创建一个新的节点,如果包含则pass
IN操作符
IN [<Collection-of-values>] # 某个属性在这个集合中的数据
字符串函数
UPPER (<input-string>) # 输入一个字符串并转换为大写 <input-string>可以是来自Neo4J数据库的节点或关系的属性名称。
LOWER (<input-string>) # 输入一个字符串并转换为小写
SUBSTRING(<input-string>,<startIndex> ,<endIndex>) # 接受一个字符串作为输入和两个索引:一个是索引的开始,另一个是索引的结束,并返回从StartInded到EndIndex-1的子字符串。
aggregation聚合函数
COUNT(<value>) # <value>可以是*,节点或关系标签名称或属性名称
MAX(<property-name>)
MIN(<property-name>)
AVG(<property-name>)
SUM(<property-name>)
建立和删除索引
CREATE INDEX ON :<label_name> (<property_name>) # 创建索引
DROP INDEX ON :<label_name> (<property_name>) # 删除索引
p.s. :后面用于引用节点或关系标签名称
创建唯一性约束
用途:
- 避免重复记录
- 强制执行数据完整性规则
CREATE CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUE
删除唯一性约束
DROP CONSTRAINT ON (<label_name>)
ASSERT <property_name> IS UNIQUE