康师傅MySQL从基础到大牛
文章平均质量分 96
跟着b站康师傅一起学的MySQL重制版,希望大家可以更我一起坚持下去,因提供的资料是pdf版本,个人还是看Markdown比较顺,于是全部重新整理为Markdown笔记,喜欢的看官老爷给个免费的三连!
LeoToJavaer
我是Leo,喜欢钻研Java相关知识,阿里云社区专家博主 ,主攻Java后端方向 | 励志成为全栈工程师!喜欢写一些有意思的博客。欢迎与我交流。
展开
-
第19章_数据库备份与恢复
数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或升级,应用程序迁移,网站集成,灾难恢复和数据中心迁移。根据不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL 数据迁移方案大致可以分为物理迁移和逻辑迁移两类。通常以尽可能自动化。原创 2023-04-01 12:34:08 · 919 阅读 · 3 评论 -
第18章_主从复制
在实际工作中,我们常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。原创 2023-04-01 12:31:13 · 566 阅读 · 2 评论 -
第17章_其他数据库日志
中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主 从服务器的 数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。从服务器名 -relay-bin.序号。从服务器名 -relaybin.index,用来定位当前正在使用的中继日志。原创 2023-04-01 12:33:06 · 618 阅读 · 1 评论 -
第16章_多版本并发控制
MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样 在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的DBMS文档)。原创 2023-04-01 12:12:54 · 561 阅读 · 0 评论 -
第15章_锁
在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的 资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL 的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。原创 2023-04-01 12:07:03 · 684 阅读 · 6 评论 -
第14章_MySQL事务日志
✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:MySQL笔记:B站康师傅天花板教程(持续更新),欢迎大家访问📚个人知识库:,欢迎大家访问事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?锁机制重做日志回滚日志有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。REDO 和 UNDO都可以视为是一种恢复操作"物理级别"逻辑操作事务的回滚逆操作。原创 2023-04-01 11:54:21 · 656 阅读 · 0 评论 -
第13章_事务基础知识
命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。原创 2023-04-01 11:51:08 · 570 阅读 · 0 评论 -
第12章_数据库其它调优策略
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第12章_数据库其它调优策略,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-04-01 11:53:01 · 603 阅读 · 0 评论 -
第11章_数据库的设计规范
在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询。原创 2023-04-01 11:51:50 · 557 阅读 · 0 评论 -
第10章_索引优化与查询优化
理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含SELECT 到 FROM之间查询的列。# 删除之前的索引。原创 2023-04-01 11:50:47 · 859 阅读 · 1 评论 -
第09章_性能分析工具的使用
1. 能做什么?表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询2. 官网介绍3. 版本情况MySQL 5.6.3以前只能 EXPLAIN SELECT;MYSQL 5.6.3以后就可以 EXPLAIN SELECT,UPDATE, DELETE在5.7以前的版本中,想要显示 partitions 需要使用 explain partitions 命令;原创 2023-04-01 11:50:16 · 681 阅读 · 0 评论 -
第08章_索引的创建与设计原则
① 冗余索引举例:建表语句如下我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一 个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有 什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就 会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。原创 2023-04-01 11:49:35 · 738 阅读 · 0 评论 -
第07章_InnoDB数据存储结构
不同的数据库管理系统(简称DBMS)的页大小不同。比如在 MySQL 的 InnoDB 存储引擎中,默认页的大小是16KBSQL Server 中页的大小为8KB,而在 Oracle 中我们用术语 “块” (Block)来表示 “页”,Oracle 支持的快大小为2KB, 4KB, 8KB, 16KB, 32KB 和 64KB。原创 2023-04-01 11:43:56 · 746 阅读 · 0 评论 -
第06章_索引的数据结构
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。原创 2023-04-01 11:45:41 · 1368 阅读 · 0 评论 -
第05章_存储引擎
MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的 默认事务型引擎 ,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。数据文件结构:(在《第02章_MySQL数据目录》章节已讲)原创 2023-04-01 11:42:45 · 860 阅读 · 0 评论 -
第04章_逻辑架构
比如:优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联 (join) 的时候,决定各个表的连接顺序,还有表达式简化、子查询转为连接、外连接转为内连接等。原创 2023-04-01 11:42:01 · 712 阅读 · 0 评论 -
第03章 用户与权限管理
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第03章 用户与权限管理,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-04-01 11:31:43 · 1221 阅读 · 1 评论 -
第02章 MySQL的数据目录
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第02章 MySQL的数据目录,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-04-01 11:28:43 · 819 阅读 · 1 评论 -
第01章 Linux下MySQL的安装与使用
✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:MySQL笔记:B站康师傅天花板教程(持续更新),欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-04-01 11:28:02 · 1226 阅读 · 0 评论 -
第18章_MySQL8其它新特性
MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。原创 2023-03-30 17:10:06 · 1742 阅读 · 0 评论 -
第17章_触发器
MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERTUPDATEDELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。原创 2023-03-30 17:11:30 · 883 阅读 · 2 评论 -
第16章_变量、流程控制与游标
定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增强存储程序处理问题的能力,避免程序异常停止运行。说明:定义条件和处理程序在存储过程、存储函数中都是支持的。定义条件就是给MySQL中的错误码命名,这有助于存储的程序代码更清晰。它将一个错误名字和指定的错误条件关联起来。这个名字可以随后被用在定义处理程序的语句中。DECLARE 错误名称 CONDITION FOR 错误码(或错误条件)和。原创 2023-03-30 17:10:56 · 960 阅读 · 2 评论 -
第15章_存储过程与函数
含义:存储过程的英文是。它的思想很简单,就是一组经过预先编译的 SQL 语句的封装。执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。好处1、简化操作,提高了sql语句的重用性,减少了开发程序员的压力2、减少操作过程中的失误,提高效率3、减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)转载 2023-03-30 17:08:04 · 1514 阅读 · 0 评论 -
第14章_视图
视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他。再比如,人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。刚才讲的只是视图的一个使用场景,实际上视图还有很多作用。最后,我们总结视图的优点。1. 操作简单。原创 2023-03-30 17:09:49 · 1224 阅读 · 0 评论 -
第13章_约束
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”原创 2023-03-30 17:09:19 · 1206 阅读 · 0 评论 -
第12章_MySQL数据类型精讲
整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。整数类型字节有符号数取值范围无符号数取值范围TINYINT1-128~1270~255SMALLINT20~65535MEDIUMINT30~167772154BIGINT8浮点数和定点数类型的特点是可以处理小数,你可以把整数看成小数的一个特例。因此,浮点数和定点数的使用场景,比整数大多了。原创 2023-03-30 17:08:47 · 825 阅读 · 0 评论 -
第11章_数据处理之增删改
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第11章_数据处理之增删改,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-03-30 17:05:53 · 1056 阅读 · 0 评论 -
第10章_创建和管理表
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第10章_创建和管理表,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-03-30 17:05:16 · 1053 阅读 · 0 评论 -
第09章_子查询
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第09章_子查询,欢迎大家访问📚个人知识库:,欢迎大家访问子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。原创 2023-03-30 17:04:44 · 1594 阅读 · 0 评论 -
第08章_聚合函数
什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG()SUM()MAX()MIN()聚合函数语法聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。原创 2023-03-30 17:06:33 · 1308 阅读 · 0 评论 -
第07章_单行函数
函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数据库的管理效率。从函数定义的角度出发,我们可以将函数分成内置函数和自定义函数。在 SQL 语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本章及下一章讲解的是 SQL 的内置函数。原创 2023-03-30 17:05:58 · 2081 阅读 · 2 评论 -
MySQL笔记:B站康师傅天花板教程(持续更新)
✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:MySQL笔记:B站康师傅天花板教程(持续更新),欢迎大家访问📚个人知识库:,欢迎大家访问B站康师傅MySQL天花板教程笔记: 最详细,最全面,最硬核!!!下面是对章节与视频的对应关系和学习建议【MySQL上篇:基础篇】【第1子篇:数据库概述与MySQL安装篇】p01-p11。原创 2023-03-30 16:38:48 · 30710 阅读 · 83 评论 -
第06章_多表查询
✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:MySQL笔记:B站康师傅天花板教程(持续更新),欢迎大家访问📚个人知识库:,欢迎大家访问多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。原创 2023-03-30 16:29:47 · 1978 阅读 · 0 评论 -
第05章_排序与分页
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第05章_排序与分页,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-03-30 16:29:01 · 2291 阅读 · 0 评论 -
第04章_运算符
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:第04章_运算符,欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-03-30 16:28:17 · 1783 阅读 · 0 评论 -
第03章_基本的SELECT语句
1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰。但在这片浩荡的波动里,有一门技术从未消失,甚至“老当益壮”,那就是 SQL。45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长了。原创 2023-03-30 16:29:50 · 4245 阅读 · 2 评论 -
第02章_MySQL环境搭建
✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:MySQL笔记:B站康师傅天花板教程(持续更新),欢迎大家访问📚个人知识库:,欢迎大家访问。原创 2023-03-30 16:26:30 · 3364 阅读 · 3 评论 -
第01章_数据库概述
Oracle1979 年,Oracle 2 诞生,它是第一个商用的 RDBMS(关系型数据库管理系统)。随着 Oracle 软件的名气越来越大,公司也改名叫 Oracle 公司。2007年,总计85亿美金收购BEA Systems。2009年,总计74亿美金收购SUN。此前的2008年,SUN以10亿美金收购MySQL。意味着Oracle 同时拥有了 MySQL 的管理权,至此 Oracle 在数据库领域中成为绝对的领导者。2013年,甲骨文超越IBM,成为继Microsoft后全球第二大软件公司。原创 2023-03-30 16:25:47 · 6158 阅读 · 2 评论