Cypher基础操作
Cypher是图形存储数据库Neo4j的查询语言,Cypher是通过模式匹配Neo4j数据库中的节点和关系,从而对数据库Neo4j中的节点和关系进行一系列的相关操作。
下面,通过一张表来介绍一下常用的Neo4j操作命令及相关说明,具体如表所示。
增-CREATE命令
语法
使用CREATE命令创建节点、关系,具体语法如下:
上述语法中,CREATE是创建节点、关系的命令;
<node-name>表示节点名称,Neo4j使用此名称将该节点的详细信息存储在Database.As中,用作Neo4j数据库管理(注:不能使用节点名称来访问节点的详细信息);
<label-name>表示标签名称,是内部节点名称的别名(注:可使用标签名称访问节点的详细信息);
<property-name>表示属性名;
< property-value >表示属性值;
<relationship-name>表示关系;
<relationship-label-name>表示关系的标签。
案例练习
我们演示创建一个节点p,其中标签为Person、属性分别为“name、age、hobby”、属性值分别为“张三、18、swimming”,具体如下:
执行上述命令后,Web UI界面的控制台返回“Added 1 label, created 1 node, set 3 properties, completed after 15 ms.”信息,说明我们新增一个标签、创建一个节点,并设置了三个属性。
下面,我们演示创建标签为Likes的关系friend,其中起始节点为Jac、属性name为Jack,结束节点为Emm、属性name为Emma,具体如下:
执行上述命令后,Web UI界面的控制台返回“Added 2 labels, created 2 nodes, set 2 properties, created 1 relationship, completed after 3 ms.”信息,说明我们新增两个标签、创建两个节点、设置两个属性、创建一个关系(注意:标签Person是节点的标签;标签Likes是关系的标签)。
查看图示数据
查
1.match命令
语法
使用MATCH命令查找所有符合给定模式的节点、关系以及属性数据,具体语法如下:
从图中可看出是语法错误,若想要使用MATCH命令,则需要与RETURN命令或更新命令结合使用。
2.RETURN命令
语法
使用RETURN命令返回查询结果,具体语法如下:
案例练习
下面,我们演示返回属性为age的节点p的所有信息,具体如下:
执行上述命令后,查看Web UI界面控制台的返回结果,具体如图所示。
从图中可看出是语法错误,若想要使用RETURN命令,则需要与METCH命令或CREATE命令结合使用。
查询案例练习(正确版)
题目1:我们演示查询数据库中节点p的详细信息,具体如下:
若想要使用RETURN命令,则需要与METCH命令或CREATE命令结合使用。
题目2:我们演示查询数据库中所有节点的详细信息,具体如下:
如果我们要按照某种条件查询呢?–WHERE命令
3.WHERE命令
语法
使用WHERE命令查询符合条件的数据,具体语法如下:
和sql很像!
删
1.-DELETE命令
语法
使用DELETE命令永久的删除节点或关系,具体语法如下:
上述语法中,DELETE是用于永久删除节点或关系的命令,该命令需要与MATCH命令结合使用,删除满足某个条件的节点;<node-name-list>表示节点名称列表;<relationship-name>表示关系名称。
案例练习
题目1:我们演示删除属性name为张三的节点,具体如下:
执行“match (p:Person) return p”命令,然后查看Web UI界面控制台的返回结果,如图所示。
若是想要清空数据库中的节点或者关系,则可以执行“match (n) detach delete n”命令,但是该命令要慎用。
题目2:我们演示删除属性name分别为Jack和Emma的节点以及相关联的关系,具体如下:
2.REMOVE命令
语法
使用REMOVE命令删除节点的属性,具体语法如下:
上述语法中,REMOVE是用于删除节点的属性的命令,该命令需要与MATCH命令结合使用;<property-name-list>表示节点的属性名称列表。
案例练习
我们演示删除节点的属性hobby,由于上述小节中演示删除了数据库中的所有节点,导致数据库中无任何节点,因此,需要先执行创建节点的命令,然后再执行删除属性hobby的命令,具体如下:
创建节点
删除属性
其他
先行工作
插入节点、关系
列访问、排序和分页
查询节点姓名、年龄并按照年龄排序返回前十个
SQL语句
Neo4j语句
索引(Indexing)
如果要通过此节点标签和属性组合快速匹配,则可以在导入期间创建索引,这很有意义。
过滤
Cypher中具有完整的集合支持,不仅包括IN
运算符,还包括集合函数、谓词和转换。
查找名字在’Bob’,'Emma’中的节点
按多个数字和文本谓词过滤
现在,让我们尝试找到一些名字以“ B”开头的大于17岁的节点。
sql语句
在LIKE
操作者通过所取代STARTS WITH
(也有CONTAINS
和ENDS WITH
)所有其中的三个索引支持。
还可以使用正则表达式,例如p.name =~ "B."
。