MySQL笔记
文章平均质量分 95
MySQL笔记
准图灵奖得主
写给自己看的博客,记录自己的进步!加油呀!
展开
-
尚硅谷MySQL学习笔记
MySQL笔记目录一、MySQL数据库基础篇大纲1. 数据库概述与MySQL安装篇第01章:数据库概述第02章:MySQL环境搭建2. SQL之SELECT使用篇第03章:基本的SELECT语句第04章:运算符第05章:排序与分页第06章:多表查询第07章:单行函数第08章:聚合函数第09章:子查询3. SQL之DDL、DML、DCL使用篇第10章:创建和管理表第11章:数据处理之增删改第12章:MySQL数据类型精讲第13章:约束4. 其它数据库对象篇第14章:视图第15章:存储过程与函数第16章:变量、原创 2022-02-11 18:27:08 · 20210 阅读 · 8 评论 -
MySQL笔记:第19章_数据库备份与恢复
第19章_数据库备份与恢复1. 物理备份与逻辑备份2. mysqldump实现逻辑备份2.1 备份一个数据库2.2 备份全部数据库2.3 备份部分数据库2.4 备份部分表2.5 备份单表的部分数据2.6 排除某些表的备份2.7 只备份结构或只备份数据2.8 备份中包含存储过程、函数、事件2.9 mysqldump常用选项3. mysql命令恢复数据3.1 单库备份中恢复单库3.2 全量备份恢复3.3 从全量备份中恢复单库3.4 从单库备份中恢复单表4. 物理备份:直接复制整个数据库5.物理恢复:直接复制到数原创 2022-03-21 17:43:34 · 1092 阅读 · 0 评论 -
MySQL笔记:第18章_主从复制
第18章_主从复制1. 主从复制概述1.1 如何提升数据库并发能力1.2 主从复制的作用第1个作用:读写分离。第2个作用就是数据备份第3个作用是具有高可用性2. 主从复制的原理2.1 原理剖析二进制日志转储线程 (Binlog dump thread)从库 I/O 线程从库 SQL 线程复制三步骤2.2 复制的基本原则3. 一主一从架构搭建3.1 准备工作3.2 主机配置文件3.3 从机配置文件3.4 主机:建立账户并授权3.5 从机:配置需要复制的主机3.6 测试3.7 停止主从同步3.8 后续4. 同步原创 2022-03-21 17:21:58 · 2345 阅读 · 0 评论 -
MySQL笔记:第17章_其他数据库日志
第17章_其他数据库日志1.MySQL支持的日志1.1日志类型1.2日志的弊端2.慢查询日志(slow query log)我们在讲解数据库事务时,讲过两种日志:重做日志、回滚日志。对于线上数据库应用系统,突然遭遇数据库宕机怎么办?在这种情况下,定位宕机的原因就非常关键。可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息,包括了错误、警告和注释等信息。比如:从日志中发现某个连接中的SQL操作发生了死循环,导致内存不足,被系统强行终止了。明确了原因,处理起来也就轻松了,系统很快就恢复了运行。原创 2022-03-20 23:15:48 · 2162 阅读 · 0 评论 -
MySQL笔记:第16章_多版本并发控制
第16章_多版本并发控制1.什么是MVCC2. 快照读与当前读2.1 快照读2.2 当前读3. 复习3.1 再谈隔离级别3.2隐藏字段、Undo Log版本链4. MVCC实现原理之ReadView4.1什么是ReadView4.2设计思路4.3 ReadView的规则4.4 MVCC整体操作流程5. 举例说明5.1 READ COMMITTED隔离级别下1.什么是MVCCMVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个原创 2022-03-20 20:24:10 · 1800 阅读 · 2 评论 -
MySQL笔记:第15章_锁
第15章_锁1.概述2. MySQL并发事务访问相同记录2.1 读-读情况2.2 写-写情况2.3读-写或写-读情况2.4 并发问题的解决方案3. 锁的不同角度分类3.1从数据操作的类型划分:读锁、写锁1.锁定读2.写操作3.2 从数据操作的粒度划分:表级锁、页级锁、行锁1.表锁(Table Lock)① 表级别的S锁、X锁事务的隔离性由这章讲述的锁来实现1.概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感原创 2022-03-20 18:02:54 · 2057 阅读 · 0 评论 -
MySQL笔记:第14章_MySQL事务日志
第14章_MySQL事务日志1.redo日志1.1为什么需要REDO日志1.2 REDO日志的好处、特点1.3 redo的组成1.4 redo的整体流程1.5 redo log的刷盘策略1.6 不同刷盘策略演示1.流程图2.举例1.7 写入redo log buffer 过程1.补充概念:Mini-Transaction2. redo 日志写入log buffer3. redo log block的结构图1.8 redo log file1.相关参数设置2. 日志文件组3. checkpoint1.9 re原创 2022-03-20 15:45:46 · 2083 阅读 · 0 评论 -
MySQL笔记:第13章_事务基础知识
第13章_事务基础知识1.数据库事务概述1.1 存储引擎支持情况1.2 基本概念1.3事务的ACID特性原子性(atomicity)一致性(consistency)隔离型(isolation)持久性(durability)1.4 事务的状态活动的(active)部分提交的(partially committed)失败的(failed)中止的(aborted)提交的(committed)2. 如何使用事务2.1 显式事务2.2 隐式事务2.3 隐式提交数据的情况数据定义语言(Data definition l原创 2022-03-20 12:04:19 · 2024 阅读 · 0 评论 -
MySQL笔记:第12章_数据库其它调优策略
第12章_数据库其它调优策略1.数据库调优的措施1.1调优的目标1.2如何定位调优问题1.4调优的维度和步骤第1步:选择适合的DBMS第2步:优化表设计第3步:优化逻辑查询第4步:优化物理查询第5步:使用Redis或 Memcached 作为缓存第6步:库级优化2. 优化MySQL服务器2.1优化服务器硬件1.数据库调优的措施1.1调优的目标尽可能节省系统资源,以便系统可以提供更大负荷的服务(吞吐量更大)合理的结构设计和参数调整,以提高用户操作响应的速度(响应速度更快)减少系统的瓶颈,提高MyS原创 2022-03-20 08:49:06 · 1140 阅读 · 0 评论 -
MySQL笔记:第11章_数据库的设计规范
第11章_数据库的设计规范1. 为什么需要数据库设计2.范式2.1范式简介2.2范式都包括哪些2.3 键和相关属性的概念2.4第一范式(1st NF)2.5 第二范式(2nd NF)1. 为什么需要数据库设计在设计数据表的时候,要考虑很多问题。比如:·用户都需要什么数据?需要在数据表中保存哪些数据?如何保证数据表中数据的正确性,当插入、删除、更新的时候该进行怎样的约束检查?如何降低数据表的数据冗余度,保证数据表不会因为用户量的增长而迅速扩张?如何让负责数据库维护的人员更方便地使用数据库?使用原创 2022-03-19 23:31:04 · 2232 阅读 · 0 评论 -
MySQL笔记:第10章_索引优化与查询优化
都有哪些维度可以进行数据库调优?简言之:索引失效、没有充分利用到索引―索引建立关联查询太多JOIN(设计缺陷或不得已的需求)――SQL优化服务器调优及各个参数设置(缓冲、线程数等)――调整my.cnf数据过多――分库分表关于数据库调优的知识点非常分散。不同的DBMS,不同的公司,不同的职位,不同的项目遇到的问题都不尽相同。这里我们分为三个章节进行细致讲解。虽然SQL查询优化的技术有很多,但是大方向上完全可以分成物理查询优化和逻辑查询优化两大块:物理查询优化是通过索引和表连接方式等技术来进原创 2022-03-19 17:46:07 · 3377 阅读 · 2 评论 -
MySQL笔记:第09章_性能分析工具的使用
第09章_性能分析工具的使用1. 数据库服务器的优化步骤2.查看系统性能参数3. 统计SQL的查询成本:last_query_cost在数据库调优中,我们的目标就是响应时间更快,哈吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式1. 数据库服务器的优化步骤当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字原创 2022-03-19 13:18:23 · 2038 阅读 · 0 评论 -
MySQL笔记:第08章_索引的创建与设计原则
第08章_索引的创建与设计原则1.索引的声明与使用1.1索引的分类1.2创建索引2.在已经存在的表上创建索引1.索引的声明与使用1.1索引的分类MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上说,索引主要有4种,分别是普通索引、唯一索引、主键索引、全文索引按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引按照作用字段个致进行划分,分成单列索引和联合索引 1.普通索引 在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可原创 2022-03-19 10:55:11 · 2728 阅读 · 0 评论 -
MySQL笔记:第07章_InnoDB数据存储结构
第07章_InnoDB数据存储结构1.数据库的存储结构:页1.1磁盘与内存交互基本单位:页1.2页结构概述1.3页的大小1.4页的上层结构2.页的内部结构第1部分:File Header(文件头部)和File Trailer (文件尾部)1.数据库的存储结构:页索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般是不同的,甚至有的原创 2022-03-19 09:20:34 · 1849 阅读 · 0 评论 -
MySQL笔记:第06章_索引的数据结构
第06章_索引的数据结构为什么使用索引索引及其优缺点索引概述索引优点索引缺点lnnoDB中索引的推演索引之前的查找在一个页中的查找在很多页中查找设计索引一个简单的索引设计方案InnoDB中的索引方案迭代1次:目录项记录的页迭代2次:多个目录项纪录的页③ 迭代3次:目录项记录页的目录页B+Tree常见索引概念聚簇索引二级索引(辅助索引、非聚簇索引)联合索引(属于非聚簇索引)InnoDB的B+树索引的注意事项一、根页面位置万年不动二、内节点(非叶节点)中目录项记录的唯一性三、一个页面最少存储2条记录MyISAM原创 2022-03-17 14:17:07 · 1591 阅读 · 0 评论 -
MySQL笔记:第05章_存储引擎
第05章_存储引擎1. 查看存储引擎2. 设置系统默认的存储引擎3. 设置表的存储引擎3.1 创建表时指定存储引擎3.2 修改表的存储引擎4. 引擎介绍4.1 InnoDB 引擎:具备外键支持功能的事务存储引擎4.2 MyISAM 引擎:主要的非事务处理存储引擎4.3 Archive 引擎:用于数据存档4.4 Blackhole 引擎:丢弃写操作,读操作会返回空内容4.5 CSV 引擎:存储数据时,以逗号分隔各个数据项4.6 Memory 引擎:置于内存的表4.7 Federated 引擎:访问远程表4.8原创 2022-03-17 08:31:58 · 1542 阅读 · 0 评论 -
Mysql笔记:第04章_逻辑架构
第04章_逻辑架构1. 逻辑架构剖析1.1 服务器处理客户端请求1.2 Connectors1.3 第1层:连接层1.4 第2层:服务层SQL Interface: SQL接口Parser: 解析器Optimizer: 查询优化器Caches & Buffers: 查询缓存组件1.5 第3层:引擎层1.6 存储层1.7 小结2. SQL执行流程2.1 MySQL 中的 SQL执行流程MySQL的查询流程:2.2 MySQL8中SQL执行原理2.3 MySQL5.7中SQL执行原理2.4 SQL语法顺原创 2022-03-16 22:54:15 · 2336 阅读 · 0 评论 -
MySQL笔记:第18章_MySQL8其它新特性
第18章_MySQL8其它新特性1. MySQL8新特性概述1.1 MySQL8.0 新增特性1. 更简便的NoSQL支持2.更好的索引3. 更完善的JSON支持4. 安全和账户管理5. InnoDB的变化6. 数据字典7. 原子数据定义语句8. 资源管理9. 字符集支持10. 优化器增强11. 公用表表达式12. 窗口函数13. 正则表达式支持14. 内部临时表15.日志记录16.备份锁17.增强的MySQL复制1.2 MySQL8.0移除的旧特性1. 查询缓存2.加密相关3.空间函数相关4.\N和NUL原创 2022-03-16 15:26:15 · 1138 阅读 · 0 评论 -
MySQL笔记:第17章_触发器
第17章_触发器1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例3. 查看、删除触发器3.1 查看触发器3.2 删除触发器4. 触发器的优缺点4.1 优点1、触发器可以确保数据的完整性。2、触发器可以帮助我们记录操作日志。3、触发器还可以用在操作数据前,对数据进行合法性检查。4.2 缺点1、触发器最大的一个问题就是可读性差2、相关数据的变更,可能会导致触发器出错。4.3 注意点触发器演示代码课后练习说明:本内容整理自尚硅谷B站MySQL视频>>尚硅谷B站MySQL视频原创 2022-03-16 14:34:28 · 1504 阅读 · 0 评论 -
MySQL笔记:第16章_变量、流程控制与游标
第16章_变量、流程控制与游标1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量演示代码2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4 案例解决演示代码3. 流程控制3.1 分支结构之 IF3.2 分支结构之 CASE3.3 循环结构之LOOP3.4 循环结构之WHILE3.5 循环结构之REPEAT对比三种循环结构:3.6 跳原创 2022-03-14 09:00:46 · 1414 阅读 · 0 评论 -
MySQL笔记:第15章_存储过程与函数
第15章_存储过程与函数1. 存储过程概述1.1 理解1.2 分类2. 创建存储过程2.1 语法分析2.2 代码举例3. 调用存储过程3.1 调用格式3.2 代码举例3.3 如何调试存储过程演示代码4. 存储函数的使用4.1 语法分析4.2 调用存储函数4.3 代码举例4.4 对比存储函数和存储过程存储函数演示代码5. 存储过程和函数的查看、修改、删除5.1 查看5.2 修改5.3 删除演示代码6. 关于存储过程使用的争议6.1 优点6.2 缺点课后练习说明:本内容整理自尚硅谷B站MySQL视频>&原创 2022-03-13 23:04:27 · 1533 阅读 · 0 评论 -
MySQL笔记:第14章_视图
第14章_视图1. 常见的数据库对象2. 视图概述2.1 为什么使用视图?2.2 视图的理解演示3. 创建视图3.1 创建单表视图3.2 创建多表联合视图3.3 基于视图创建视图演示代码4. 查看视图演示代码5. 更新视图的数据5.1 一般情况5.2 不可更新的视图演示代码6. 修改、删除视图6.1 修改视图6.2 删除视图演示代码7. 总结7.1 视图优点7.2 视图不足课后练习说明:本内容整理自尚硅谷B站MySQL视频>>尚硅谷B站MySQL视频1. 常见的数据库对象对象描述原创 2022-03-13 12:33:16 · 1643 阅读 · 0 评论 -
MySQL笔记:第13章_约束
第13章_约束一级目录二级目录三级目录ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a keyERROR 1063 (42000): Incorrect column specifier for column 'ename' 因为ename不是整数类一级目录二级目录三级目录约束(constraint)概述1.1 为什么需要约原创 2022-03-13 09:09:52 · 1937 阅读 · 0 评论 -
MySQL笔记:第12章_MySQL数据类型精讲
第12章_MySQL数据类型精讲1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL2.3 适用场景2.4 如何选择?演示代码3. 浮点类型3.1 类型介绍3.2 数据精度说明3.3 精度误差说明4. 定点数类型4.1 类型介绍4.2 开发中经验演示代码5. 位类型:BIT演示代码6. 日期与时间类型6.1 YEAR类型6.2 DATE类型6.3 TIME类型6.4 DATETIME类型6.5 TIMESTAMP类型原创 2022-03-12 12:32:59 · 1375 阅读 · 0 评论 -
MySQL笔记:第11章_数据处理之增删改
第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中演示代码2. 更新数据演示代码3. 删除数据演示代码4. MySQL8新特性:计算列演示代码5. 综合案例演示代码课后练习说明:本内容整理自尚硅谷B站MySQL视频>>尚硅谷B站MySQL视频1. 插入数据1.1 实际问题解决方式:使用 INSERT 语句向表中插入数据。1.2 方式1:VALUES的方式添加使用这种语法一次只能向表中插入一条数据。情况原创 2022-03-09 12:16:47 · 1494 阅读 · 0 评论 -
MySQL笔记:第10章_创建和管理表
MySQL笔记:第10章_创建和管理表1. 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型2. 创建和管理数据库2.1 创建数据库2.2 使用数据库2.3 修改数据库2.4 删除数据库代码演示3. 创建表3.1 创建方式13.2 创建方式23.3 查看数据表结构代码演示4. 修改表4.1 追加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列代码演示5. 重命名表代码演示6. 删除表7. 清空表代码演示8. 内容拓展拓展1:阿里巴巴《Java开发手册》之M原创 2022-03-09 10:32:21 · 1899 阅读 · 0 评论 -
MySQL笔记:第09章_子查询
第09章_子查询1. 需求分析与问题解决1.1 实际问题1.2 子查询的基本使用1.3 子查询的分类分类方式1:分类方式2:演示代码2. 单行子查询2.1 单行比较操作符2.2 代码示例2.3 HAVING 中的子查询2.4 CASE中的子查询2.5 子查询中的空值问题2.5 非法使用子查询演示代码3. 多行子查询3.1 多行比较操作符3.2 代码示例3.3 空值问题演示代码4. 相关子查询4.1 相关子查询执行流程4.2 代码示例4.3 EXISTS 与 NOT EXISTS关键字4.4 相关更新4.4原创 2022-03-06 00:21:25 · 1993 阅读 · 0 评论 -
MySQL笔记:第08章_聚合函数
第08章_聚合函数1. 聚合函数介绍1.1 AVG和SUM函数1.2 MIN和MAX函数1.3 COUNT函数演示代码2. GROUP BY2.1 基本使用2.2 使用多个列分组演示代码3. HAVING3.1 基本使用3.2 WHERE和HAVING的对比演示代码4. SELECT的执行过程4.1 查询的结构4.2 SELECT执行顺序4.3 SQL 的执行原理演示代码课后练习说明:本内容整理自尚硅谷B站MySQL视频>>尚硅谷B站MySQL视频上一章讲到了 SQL 单行函数。实际上 SQ原创 2022-03-05 22:45:00 · 1800 阅读 · 0 评论 -
MySQL笔记:第07章_单行函数
第07章_单行函数1. 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异2. 数值函数2.1 基本函数2.2 角度与弧度2.3 三角函数2.4 指数函数、对数函数2.5 进制间的转换3. 字符串函数4. 日期和时间函数4.1 获取日期、时间4.2日期与时间戳的转换4.3 获取月份、星期、星期数、天数等函数4.4 日期的操作函数4.5 时间和秒钟转换的函数4.6 计算日期和时间的函数第1组:第2组:4.7 日期的格式化与解析5.流程控制函数6. 加密与解密函数7. MySQL信息函数8. 其他函数原创 2022-03-05 20:50:54 · 2024 阅读 · 0 评论 -
MySQL笔记:第06章_多表查询
第06章_多表查询多表查询概述1.一个案例引发的多表连接1.1 案例说明多表查询概述多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。为什么不把多张表合成一张表?答:多张表合成一张表会导致很多信息的冗余!将不必要的冗余信息从磁盘导入内存将导致很多的磁盘IO。1.一个案例引发的多表连接1.1 案例原创 2022-03-05 12:42:12 · 2827 阅读 · 0 评论 -
Mysql笔记:第05章_排序与分页
第05章_排序与分页1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序排序演示代码2. 分页2.1 背景2.2 实现规则2.3 拓展分页演示代码3.课后练习1. 排序数据1.1 排序规则使用 ORDER BY 子句排序ASC(ascend): 升序DESC(descend):降序ORDER BY 子句在SELECT语句的结尾。1.2 单列排序SELECT last_name, job_id, department_id, hire_dateFROM employeesORDE原创 2022-02-12 10:50:16 · 1839 阅读 · 0 评论 -
Mysql笔记:第04章_运算符
第04章_运算符1. 算术运算符1. 算术运算符原创 2022-02-12 08:50:58 · 2147 阅读 · 0 评论 -
Mysql笔记:第03章_基本的SELECT语句
第03章_基本的SELECT语句1. SQL概述1.1 SQL背景知识1.3 SQL 分类2. SQL语言的规则与规范2.2 SQL大小写规范 (建议遵守)2.3 注 释2.4 命名规则(暂时了解)2.5 数据导入指令3. 基本的SELECT语句3.0 SELECT...3.1 SELECT ... FROM3.2 列的别名3.3 去除重复行3.4 空值参与运算3.5 着重号3.6 查询常数4. 显示表结构1. SQL概述1.1 SQL背景知识1946年,世界上第一台电脑诞生,如今,借由这台电脑发展原创 2022-02-12 07:37:39 · 3838 阅读 · 0 评论 -
Mysql笔记:第02章_MySQL环境搭建
第02章_MySQL环境搭建1. MySQL的卸载步骤1:停止MySQL服务步骤2:软件的卸载步骤3:残余文件的清理步骤4:清理注册表(选做)步骤5:删除环境变量配置2. MySQL的下载、安装、配置2.1 MySQL软件2.2 软件的下载2.3 MySQL8.0 版本的安装2.4 配置MySQL8.02.6 MySQL5.7 版本的安装、配置2.7 安装失败问题3. MySQL的登录3.1 服务的启动与停止3.2 自带客户端的登录与退出4. MySQL演示使用4.1 MySQL的使用演示4.2 MySQL原创 2022-02-12 04:02:12 · 2925 阅读 · 0 评论 -
Mysql笔记:第01章_数据库概述
第01章_数据库概述1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库管理系统排名(DBMS)2.4 常见的数据库介绍3. MySQL介绍3.1 概述3.2 MySQL发展史重大事件3.3 关于MySQL 8.03.4 Oracle vs MySQL4. RDBMS 与 非RDBMS4.1 关系型数据库(RDBMS)4.2 非关系型数据库(非RDBMS)4.2.1 介绍4.2.2 有哪些非关系型数据库4.2.3 NoSQL的演原创 2022-02-11 23:39:05 · 3310 阅读 · 0 评论