neo4j学习笔记

图数据库

图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是图论为基础的,图数据库主要用于存储更多的连接数据。

图论(GraphTheory)是数学的一个分支。图论以图为研究对象,图论的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点表示事物,用连接两点的线表示相应两个事物具有关系
关系数据库:适合需要高度数据一致性、事务完整性和复杂查询的应用,如金融、会计等。

非关系数据库:适合需要高扩展性、高性能和存储半结构化数据的应用,如社交网络、大数据应用等。

neo4j数据库模型

节点和关系都包含属性

关系连接节点

属性是键值对

节点用圆圈表示,关系用方向键表示

关系具有方向:单向和双向

每个关系包含"开始节点"或"从节点"和"到节点"或"结束节点"

CQL使用

Neo4j图形数据库的查询语言,是一种声明性模式匹配语言

CREATE 创建

clike 复制代码
CREATE (<要创建的节点名称>:<节点标签名称>)
clike 复制代码
CREATE (
   <将要创建的节点名称>:<节点标签名称>
   { 	
      <属性名称>:<属性值>
      ........
      <属性名称>:<属性值>
   }
)
clike 复制代码
CREATE (节点名:标签名:标签名:标签名:标签名)
clike 复制代码
CREATE (<From节点的名称>:<From节点的标签名称>)-
	[<关系的名称>:<关系的标签名称>]
	->(<To节点的名称>:<To节点的标签名称>)
	)

MATCH匹配

clike 复制代码
MATCH 
(
   <要创建一个节点名称>:<节点的标签名称>
)

MATCH 经常需要与其他的语句配合才可以使用,例如

clike 复制代码
# 查询Dept下的内容
MATCH (dept:Dept) return dept

# 查询Employee标签下 id=123,name="Lokesh"的节点
MATCH (p:Employee {id:123,name:"Lokesh"}) RETURN p

## 查询Employee标签下name="Lokesh"的节点,使用(where命令)
MATCH (p:Employee)
WHERE p.name = "Lokesh"
RETURN p

RETURN返回

clike 复制代码
RETURN 
   <要创建的节点名称>.<要创建的节点的属性名称>,
   ........
   <要创建的节点名称>.<要创建的节点的属性名称>

WHERE哪里

clike 复制代码
WHERE <条件>
clike 复制代码
条件包括以下:
<节点或关系的属性名称> <比较运算符之一> <字面值,如数字文字,字符串文字等>
比较运算符:
and ,  or ,  not,  xor【位运算,相同为0,不同为1】,  <,  > , <> 【不等于】, = , <= , >= , 

DELETE删除

clike 复制代码
DELETE <要从数据库中删除的节点名称列表>   
# 使用逗号(,)运算符来分隔节点名
clike 复制代码
DELETE <结束节点名称>,<结束节点名称>,<关系名称>
# 使用逗号(,)运算符来分隔节点名称和关系名称

REMOVE移除

clike 复制代码
REMOVE <属性列表>
clike 复制代码
属性列表如下:
<节点的名称>.<节点的属性名称>,
<节点的名称>.<节点的属性名称>, 
.... 
<节点的名称>.<节点的属性名称> 

使用逗号(,)运算符来分隔标签名称列表

使用dot(.)运算符来分隔节点名称和标签名称

clike 复制代码
REMOVE <标签列表> # 用于永久性地从节点或关系中删除它
clike 复制代码
标签列表如下:
<节点的名称>:<节点的标签名称>, 
.... 
<节点的名称>:<节点的标签名称> 

使用逗号(,)运算符来分隔标签名称列表

使用dot(.)运算符来分隔节点名称和标签名称

ORDER BY以...排序

默认升序排序

clike 复制代码
ORDER BY  <属性名列表>  [DESC]	 
clike 复制代码
<属性名列表>语法:
<节点的标签名称>.<节点的属性名称>,
<节点的标签名称>.<节点的属性名称>, 
.... 
<节点的标签名称>.<节点的属性名称> 

使用逗号(,)运算符来分隔属性名列表

SET组

clike 复制代码
SET  <属性名称列表>  #用于执行添加或更新操作以满足我们的要求
clike 复制代码
属性名称列表如下:
<节点的标签名称>.<节点的属性名>,
<节点的标签名称>.<节点的属性名>, 
.... 
<节点的标签名称>.<节点的属性名> 

使用逗号(,)运算符来分隔属性名列表

使用dot(.)运算符来分隔节点标签名称和属性名称

相关推荐
专注API从业者6 分钟前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋13 分钟前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落1 小时前
Python学习之装饰器
开发语言·python·学习
XiaoMu_0011 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
THMAIL1 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
我没想到原来他们都是一堆坏人3 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
总有刁民想爱朕ha3 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
人衣aoa4 小时前
Python编程基础(八) | 类
开发语言·python
大模型真好玩4 小时前
深入浅出LangGraph AI Agent智能体开发教程(四)—LangGraph全生态开发工具使用与智能体部署
人工智能·python·mcp
百锦再4 小时前
脚本语言的大浪淘沙或百花争艳
java·开发语言·人工智能·python·django·virtualenv·pygame