Neo4j快速上手(2)CQL语法

CQL 语法

主要是如何操作,少讲概念。也有一些自己的理解,酌情观看。

第一次执行 CQL 命令

创建节点

CREATE (p:Person);

查询节点

MATCH (n) RETURN n;

我们已经完成创建节点,查询节点的操作。接下来讲述这些命令的含义。

CREATE

创建节点,相当于关系型数据库 INSERT。

CREATE (p:Person);是刚才执行过的命令,意思是,创建一个节点 p,它的标签是 Person。p 是一个临时名称,Person 是它的类型。
这个语法类似于 Java 的Person p = new Person();
Person 标签不需要提前创建,它就像是 p 的一个特殊属性。

创建时指定属性:

CREATE (p:Person{name:"刘备",age:18});

查询节点,这个命令相当于 SELECT * FROM ,它会返回所有节点,稍后讲解该命令。先执行看看结果:

MATCH (n) RETURN n;

查询结果,有两个节点,一个是之前创建的空节点,一个是名称为“刘备”的节点,把鼠标移动到刘备上,可以看到下方的属性。

同时包含多个标签的节点:

CREATE (m:Person:Man)

MATCH

查询,相当于关系型数据库 SELECT,该关键字必须和 RETURN 一起用才能查询

下面的CQL,相当于SELECT * as p FROM Person

MATCH (p:Person) RETURN p;

只查询name属性:

MATCH (p:Person) RETURN p.name;

查询name=刘备的节点:

MATCH (p:Person{name:"刘备"}) RETURN p;

RETURN

必须和 MATCH 一起用,合在一起相当于 SELECT

WHERE

条件语句

查询name=刘备的节点:

MATCH (p:Person) WHERE p.name="刘备" RETURN p;

REMOVE

移除age属性(RETURN 不是必须的):

MATCH (p:Person) WHERE p.name="刘备" REMOVE p.age RETURN p;

移除标签(前边创建过这个有两个标签的节点):

MATCH (n:Person:Man) REMOVE n:Man RETURN n;

SET

添加/修改,属性

添加/修改age属性:

MATCH (p:Person) WHERE p.name="刘备" SET p.age=20 RETURN p;

ORDER BY

顺序:

MATCH (p:Person) RETURN p ORDER BY p.age;

倒序:

MATCH (p:Person) RETURN p ORDER BY p.age DESC;

UNION

联合,和MySQL相似,相同的列会被自动合并,查询字段必须对得上才能联合查询

两个相同的name,查询结果只有一列:

MATCH (p:Person) WHERE p.name = "刘备" RETURN p.name
UNION
MATCH (p:Person) WHERE p.name = "刘备" RETURN p.name

UNION ALL

联合查询,不会合并

不会合并的查询,结果有两列:

MATCH (p:Person) WHERE p.name = "刘备" RETURN p.name
UNION ALL
MATCH (p:Person) WHERE p.name = "刘备" RETURN p.name

LIMIT

查询前两行:

MATCH (p:Person) RETURN p LIMIT 2;

SKIP

跳过前两行:

MATCH (p:Person) RETURN p SKIP 2;

MERGE

如果不存在,创建

如果张飞不存在,创建:

MERGE (p:Person{name:"张飞"})

NULL

name不为空

MATCH (p:Person) WHERE p.name IS NOT NULL RETURN p;

name为空

MATCH (p:Person) WHERE p.name IS NULL RETURN p;

IN

MATCH (p:Person) WHERE p.name IN ["张飞", "刘备"] RETURN p;

ID

节点唯一标识
MATCH (n:Person) RETURN id(n);
posted @ 2023-11-22 11:58  吴思老  阅读(185)  评论(0编辑  收藏  举报