CQL语句和函数

CQL语句和函数

_

一,背景

Neo4j 的 Cypher 语言是为处理图形数据而构建的,CQL 代表 Cypher 查询语言。像 Oracle 数据库具有查询 语言 SQL,Neo4j 具有 CQL 作为查询语言。CQL 是 Neo4j 图形数据库的查询语言,是一种声明性模式匹配语言,遵循 SQL 语法,其语法是非常简单且人性化、可读的格式。

二,图数据模型

Neo4j 的核心就两个概念:

概念图形表示说明
Node(节点)🔵 圆圈代表实体,如:人、文章、标签
Relationship(关系)➡️ 箭头代表节点间的连接,如:张三→写了→文章1

节点有 Label(标签),相当于分类,比如 :Person:Article
关系有 Type(类型),描述连接方式,比如 :WROTE:TAGGED
节点和关系都可以有属性,用 {key: value} 表示

三,基础语法

3.1 创建节点和关系(CREATE)

3.1.1 创建节点

// 创建一个Person节点
CREATE (p:Person {name: '张三', age: 28, city: '杭州'})
RETURN p

语法拆解

  • (p) — 变量 p,代表这个节点,方便后续引用
  • :Person — 标签,表示这是"人"类型
  • {...} — 属性,JSON格式
  • RETURN p — 返回创建的结果,不写就不返回

3.1.2 创建多个节点

CREATE (:Person {name: '李四', age: 32}),
       (:Person {name: '王五', age: 25}),
       (:Article {title: '学习Cypher', category: '技术'})

3.1.3 创建关系

// 先查找已有节点,然后创建关系
MATCH (a:Person {name: '张三'})
MATCH (b:Article {title: '学习Cypher'})
CREATE (a)-[:WROTE {date: date('2026-05-22')}]->(b)
RETURN a, b

语法拆解

  • (a)-[:WROTE]->(b) — 表示a指向b,关系类型是WROTE
  • 关系上也可以带属性,比如 {date: ...}

3.1.4 一次性创建节点+关系

CREATE (p:Person {name: '赵六', age: 30})
       -[:WROTE {date: date('2026-05-20')}]->
       (art:Article {title: '图数据库入门', category: '数据库'})
RETURN p, art

3.2 查询数据(MATCH + RETURN)

MATCH 相当于 SQL 的 SELECT,但用的是模式匹配

3.2.1 查所有节点

MATCH (n) RETURN n LIMIT 25

3.2.2 按标签和属性查找

// 找所有Person
MATCH (p:Person) RETURN p

// 按属性过滤
MATCH (p:Person {name: '张三'}) RETURN p

// 用WHERE条件
MATCH (p:Person)
WHERE p.age > 26
RETURN p.name, p.age

3.2.3 查询关系

// 谁写了文章?
MATCH (p:Person)-[:WROTE]->(a:Article)
RETURN p.name, a.title

// 谁写了什么文章?包括关系属性
MATCH (p:Person)-[r:WROTE]->(a:Article)
RETURN p.name, a.title, r.date

3.3 更新和删除(SET, REMOVE, DELETE)

3.3.1 更新属性

// SET 添加或修改属性
MATCH (p:Person {name: '张三'})
SET p.age = 29, p.blog = 'zhangsan.tech'
RETURN p

3.3.2 删除属性

MATCH (p:Person {name: '张三'})
REMOVE p.blog
RETURN p

3.2.3 删除关系

MATCH (p:Person {name: '张三'})-[r:WROTE]->(a:Article {title: '学习Cypher'})
DELETE r

3.2.4 删除节点

// 先删关系,再删节点(不能删还有关系的节点)
MATCH (p:Person {name: '赵六'})
DETACH DELETE p   // DETACH自动删掉所有关联关系

3.4 常用函数

函数说明示例
count()计数RETURN count(p)
collect()聚合成列表RETURN collect(p.name)
date()创建日期date('2026-05-22')
type()取关系类型RETURN type(r)
labels()取节点标签RETURN labels(n)
exists()检查属性存在WHERE exists(n.email)
Neo4j基础 2026-05-22
项目学习目录 2026-05-25

© 2026 苏叶的belog