Mysql
数据库基本概念
所谓数据(Data)是指对客观事物进行描述可以鉴别的符号,这些符号是可识别的,抽象的,有多种表现形式:字母,文字,文本,图形,音频,视频等
数据库管理系统(DBMS):数据库及其管理它的软件组成
数据库的分类:Nosql(非关系型数据库),RDBMS(关系型数据库)
数据库应用系统(DBAS):数据库管理系统下支撑建立的计算机应用系统
数据库管理系统的功能
.数据定义:提供数据定义语言(data definition language,DDL)用于建立,修改数据库的库,表结构或模式,将结构或模式信息存储在数据字典(data dictionary)之中
2.数据操作:提供数据操作语言(data manipulation language,DML),用于增加(create),查询(retricve),更新(update),删除(delete)数据
3.数据的持久存储,组织和维护,管理:能够分类组织,存储和管理各种数据,可以实现数据的加载,转换,重构等工作,能够将大量数据进行持久化存储,能够监控数据库的性能。
4.保护和控制:可以支持多用户对数据并发控制,支持数据库的完整性,安全性,支持故障和错误中回复数据。
5.通信与交互接口,可以实现高效存取数据(例如查询和修改数据),可以实现数据与其他软件,数据库的通信和相互操作等功能
关系型数据库
'事物(Transation)':一组数据操作必须组成一个整体,要么全部完成,要么全部取消。
'事物的特性':原子性,一致性,隔离性,持久性,ACID特性
1.原子性:事物是一个不可再分的逻辑执行体。
2.一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
3.隔离性:多个事务执行互不干扰
4.持久性:事务执行完成后的结果永远保持不变
事务并发(多个事务一起操作)的问题
1.脏读(dirty read)
不可重复读(unrepeatable read)
幻像读(phantom read)
横向(水平)扩展:增加硬件的数量来保证计算机系统的数据运算处理能力
纵向(垂直)扩展:升级更换计算机里的CPU硬盘,内存等,提高计算机的数据处理运算能力
不可重复读和幻读的区别:
不可重复读的重点是修改,幻读的重点在于新增或者删除。
Nosql数据库
nosql数据一般会弱化关系,即弱化模式,表结构,完整性约束,取消事务机制,目的去掉关系模式的约束实现强大的分布式部署能力(分区容错性,伸缩性,可用性)
Nosql的应用:
1.海量的日志数据,业务数据或监控数据的查询和管理
2.特殊或复杂的数据模型简化处理
3.作为数据仓库,数据挖掘系统或OLAP系统的后台数据支撑
其他的非关系型数据库:classandra,mongodb,Neo4j,Hbase等
常见的关系型数据库:oracle,db2,sqlserver,mysql等
SQL语言分为
1.数据查询语言(DQL):用于对数据的查询
2.数据操作语言(DML):用于对数据库中的数据的修改,删除等操作
3.数据定义语言(DDL):针对与数据库对象(索引,列表,数据库,函数和图像等)
4.数据控制语言(DCL):赋予和回收权限
5.事务控制语言 (TCL) :对数据库的事务管理
在关系型数据库中,数据库中表中行被称为记录,表中的列被称为这些记录的字段
关系型数据库 === (表格)行列
数据库列表的类型----整数类型,浮点型,字符串类型,日期类型
表格插入数据时的操作
注意事项:
表格删除数据时的操作
主键
主键的完整称呼是'主键约束',是Mysql中使用最为频繁的约束,一般情况下,为了便于DBMS更快的查找到表中的记录,都会在表中设置一个主键
主键又分为但字段主键和多字段联合主键(复合主键------多个单字段组合为一个主键)
1.每个表中只能定义一个主键
2.主键值必须唯一标识表中的每一行,且不能为NULL,即表中不可能存在有相同主键值的两行数据,这是唯一性原则
3.一个字段名只能在联合主键字段表中出现一次
4.联合主键不能包含不必要的多余字段,当把联合主键的某一个字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不确定的,这是最小化原则。
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息(以空间换时间)索引往往是存储在磁盘上的文件中的 -------索引太占空间
关系型数据库的约束
1.约束实际上就是表中数据的限制条件
2.约束目的就是为了保证表中的记录的完整性和有效性,比如用户表有些列的值,不能为空,不能重复
3.约束分类:
主键约束:primary key
自增长约束:auto increment
非空约束:not null
唯一性约束:unique
默认约束:default
零填充约束:zerofill
外键约束:foreign key
多个表之间的查询
自连接表一定要起别名,对于自连接查询,可以是内连接,也可以是外连接查询
注意:这是表格查询,查询后的结果是两个表的,不是一个表的
自动连接默认所有,内连接可以有选择性的匹配
全外连接:展示左右表全部不匹配信息
交集:两个表格所有内容组合在一起
并集:两个表格相同的部分
差集:A表格减去与B表格相同的部分
MYSQL没有交集,并集和差集功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)