Neo4j
1、简介
Neo4j 是一个高性能的,NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
Neo4j 因其嵌入式、高性能、轻量级等优势,越来越受到关注。
应用场景:
- 社交网络
- 知识图谱
- 恶意软件检测
Neo4j 的组成:
-
节点
图形的基本单元,包含一组 键值对
-
属性
键值对
-
关系(可以有属性)
连接两个节点
-
标签
一个节点或关系 包含 一个或多个标签
-
数据浏览器
执行 CQL
导出 JSON 或 CSV
2、下载与安装
下载
neo4j 官网:https://neo4j.com/download-center/
配置环境变量
# 创建系统环境变量
NEO4J_HOME=D:\Environment\neo4j-community-3.5.30
# path 路径添加环境变量
path=%NEO4J_HOME%\bin
安装 neo4j 服务
# 安装和卸载服务
neo4j install-service
neo4j uninstall-service
# 启动服务,停止服务,重启服务和查询服务的状态
neo4j start
neo4j stop
neo4j restart
neo4j status
浏览器打开
http://localhost:7474
# 初始账号
neo4j
# 初始密码
neo4j
# 切换成多行命令
shift + Enter
3、文档
官方文档:https://neo4j.com/docs/getting-started/3.5/
http://neo4j.com.cn/public/cypher/neo4j_cql_introduction.html
W3Cschool-neo4j 教程:https://www.w3cschool.cn/neo4j/
4、Cypher
官方文档:https://neo4j.com/docs/cypher-manual/3.5/#cypher-manual
什么是 Cypher?
Cypher 是一种声明式图形查询语言,允许对图形进行富有表现力和高效的查询和更新。
CQL(Cypher Query Language)
语法简介
Cypher 从 SQL 借用了它的结构——查询是使用各种子句构建的。
查询语言由几个不同的子句组成。
以下是用于从图中读取的一些子句:
-
MATCH
:要匹配的图形模式。这是从图中获取数据的最常用方法。 -
WHERE
:本身不是一个子句,而是MATCH
,OPTIONAL MATCH
和WITH
的一部分。向模式添加约束,或过滤通过WITH
的中间结果。 -
RETURN
:返回什么。
CQL 命令
CQL 命令 | 描述 | 用法 |
---|---|---|
CREATE | 创建 | 创建节点,关系和属性 |
MATCH | 匹配 | 检索有关节点,关系和属性数据 |
RETURN | 返回 | 返回查询结果 |
WHERE | 哪里 | 提供条件过滤检索数据 |
DELETE | 删除 | 删除节点和关系 |
REMOVE | 移除 | 删除节点和关系的属性 |
ORDER BY | 以…排序 | 排序检索数据 |
SET | 组 | 添加或更新标签 |
CQL 函数
定制列表功能 | 描述 | 用法 |
---|---|---|
String | 字符串 | 它们用于使用String字面量。 |
Aggregation | 聚合 | 它们用于对CQL查询结果执行一些聚合操作。 |
Relationship | 关系 | 他们用于获取关系的细节,如startnode,endnode等。 |
CQL 数据类型
CQL 数据类型 | 用法 |
---|---|
boolean | 用于表示布尔文字:true,false。 |
byte | 用于表示8位整数。 |
short | 用于表示16位整数。 |
int | 用于表示32位整数。 |
long | 用于表示64位整数。 |
float | I用于表示32位浮点数。 |
double | 用于表示64位浮点数。 |
char | 用于表示16位字符。 |
String | 用于表示字符串。 |
创建
# 创建
create (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
create (dept:Dept { deptno:10,dname:"Accounting",location:"Paris" })
create (emp:Employee { id: 123,name: "John",sal: 35000,deptno: 10 })
语法元素 | 描述 |
---|---|
<node-name> | 节点名称 |
<label-name> | 节点的标签名称 |
<Property-name>:<Property-Value> | 键值对 |
MATCH RETURN
注意:match、return 不能单独使用!
match命令主要用途:
- 获取有关数据库节点和属性数据
- 获得有关节点,从数据库中的关系和属性数据
match (
<node-name>:<label-name>
)
error: match (dept:Dept)
return子句的主要用途:
- 检索节点的一些特性
- 检索节点的所有属性
- 检索节点和关联关系的一些性质
- 检索节点和关联关系的所有属性
return
<node-name>.<property1-name>,........
<node-name>.<propertyn-name>
error: return dept.deptno
match + return语句:
# 查询节点属性
match (dept:Dept)
return dept.deptno,dept.dname
# 查询节点
match (dept:Dept)
return dept
关系
基于方向性:
- 单向关系
- 双向关系
基于节点:
- 传出关系
- 传入关系
MATCH (<node1-label-name>:<nodel-name>),(<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>
语法元素 | 描述 |
---|---|
<node1-name> | 节点1 名称 |
<node1-label-name> | 节点1 标签名称 |
<node2-name> | 节点2 名称 |
<node2-label-name> | 节点2 标签名称 |
<relationship-name> | 关系的名称 |
<relationship-label-name> | 关系的标签名称 |
<define-properties-list> | 关系的属性,一个或多个键值对 |
// 创建单向关系
match (e:Customer),(cc:CreditCard)
create (e)- [r:do_shopping_with] -> (cc)
// 查询
MATCH p=()-[r:do_shopping_with]->(cc)
RETURN p
// 删除关系
MATCH (e:Customer)-[r:do_shopping_with]->(cc)
delete r
// 关系携带属性
match (cust:Customer),(cc:CreditCard)
create (cust)-[r:do_shopping_with{shopdate:"2021/11/10",price:55000}]->(cc)
return r
where 字句
match (emp:Employee)
where emp.name = "John"
return emp
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 <node-name-list>
// 删除节点间的关系
delete <node1-name>,<node2-name>,<relationship-name>
MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
// 删除全部节点
MATCH (n) detach delete n
// 移除属性
MATCH (book { id:122 })
REMOVE book.price
RETURN book
// 移除标签
MATCH (m:Movie)
REMOVE m:Picture
原文地址:https://blog.csdn.net/weixin_51123079/article/details/124732222
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。