
MySQL从入门到精通到深入
文章平均质量分 89
从MySQL的基础概念、语法和操作,到MySQL进阶的存储引擎、索引优化、慢查询、SQL优化、锁等,再到主从复制、分库分表、读写分离,一步步带领大家从MySQL入门到精通到深入,全面掌握MySQL。
王哲晓
没有高深的知识,没有进阶的技巧,万丈高楼平地起!
展开
-
第二十三章 MySQL锁之表锁
表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。对于表级锁,主要分为以下三类:1. 表锁2. 元数据锁(meta data lock,MDL)3. 意向锁对于表锁,主要分以下两类类:1. 表共享读锁(read lock2. 表独占写锁(write lock二、语法加锁:表名。释放锁:客户端断开连接。三、特点A.读锁。原创 2025-02-04 17:07:02 · 358 阅读 · 0 评论 -
第二十二章 MySQL锁之全局锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。MySQL中的锁,按照锁的粒度分,分为以下三类:全局锁:锁定数据库中的所有表。表级锁:每次操作锁住整张表。行级锁:每次操作锁住对应的行数据。二、全局锁概念。原创 2025-02-04 16:52:44 · 868 阅读 · 0 评论 -
第二十一章 触发器
触发器是与表有关的数据库对象,指在之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性, 日志记录数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。原创 2025-02-04 15:58:36 · 422 阅读 · 0 评论 -
第二十章 存储函数
前面章节中,我们详细讲解了MySQL中的存储过程,掌握了存储过程之后,学习存储函数则肥仓简单,存储函数其实是一种特殊的存储过程,也就是有返回值的存储过程。存储函数的参数只能是IN类型的。原创 2025-02-04 15:44:18 · 203 阅读 · 0 评论 -
第十九章 存储过程
用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用"@变量名"使用就可以。其作用域为当前连接。原创 2025-02-04 14:24:37 · 1121 阅读 · 0 评论 -
第十八章 视图
一、概述视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。原创 2025-02-04 11:34:11 · 1053 阅读 · 0 评论 -
第十七章 SQL优化(二)
sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫。的性能低,我们在优化排序操作时,尽量要优化为 Using index。把之前前面章节测试时,为tb_user表所建立的部分索引直接删除掉。通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区。通过有序索引顺序扫描直接返回有序数据,这种情况即为。对于以上的两种排序方式,Using index。都没有索引,所以此时再排序时,出现。,不需要额外排序,操作效率高。4. 创建索引后,根据。原创 2025-01-23 07:48:45 · 232 阅读 · 0 评论 -
第十六章 SQL优化(一)
存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表 (index organized table IOT)。50的记录,我们来看看会发生什么现象,会再次开启一个页,写入新的页中吗?那也就意味着, 一个页中所存储的行也是有限的,如果插入的数据行row。在该页存储不小,将会存储到下一个页中,页与页之间会通过指针连接。注:这个里面所发生的合并页的这个现象,就称之为 "页合并"。的数据之后,那么此时,这三个页之间的数据顺序是有问题的。4. 删除数据,并将页合并之后,再次插入新的数据。原创 2025-01-23 07:34:14 · 737 阅读 · 0 评论 -
第十五章 理解索引的使用原则及失效场景
在讲解索引的使用原则之前,先通过一个简单的案例,来验证一下索引,看看是否能够通过索引来提升数据查询性能。在演示的时候,我们还是使用之前准备的一张表 tb_sku , 在这张表中准备了1000w的记录。这张表中id为主键,有主键索引,而其他字段是没有建立索引的。可以看到即使有1000w的数据,根据id进行数据查询,性能依然很快,因为主键id是有索引的。我们可以看到根据sn字段进行查询,查询返回了一条数据,结果耗时 20.78sec,就是因为sn没有索引,而造成查询效率很低。原创 2025-01-16 22:50:38 · 723 阅读 · 0 评论 -
第十四章 SQL性能分析
MySQL客户端连接成功后,通过命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERTUPDATEDELETESELECT的访问频次:Com_deleteCom_insertCom_selectCom_update通过上述指令,我们可以查看到当前数据库到底是以查询为主,还是以增删改为主,从而为数据 库优化提供参考依据。如果是以增删改为主,我们可以考虑不对其进行索引的优化。如果是以查询为主,那么就要考虑对数据库的索引进行优化了。原创 2025-01-10 22:46:11 · 975 阅读 · 0 评论 -
第十三章 索引的结构特点、分类及语法
索引(index)是帮助MySQL高效获取数据的数据结构有序。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。我们通过一个简单的案例来了解下索引的具体作用,如下所示的表结构及其数据:假如我们要执行的SQL语句为 :1).无索引情况在无索引情况下,就需要从第一行开始扫描,一直扫描到最后一行,我们称之为 全表扫描,性能很低。2).有索引情况。原创 2025-01-05 22:32:42 · 767 阅读 · 0 评论 -
第十二章 存储引擎
大家可能没有听说过存储引擎,但是一定听过引擎这个词,引擎就是发动机,是一个机器的核心组件。比如,对于舰载机、直升机、火箭来说,他们都有各自的引擎,是他们最为核心的组件。而我们在选择引擎的时候,需要在合适的场景,选择合适的存储引擎,就像在直升机上,我们不能选择舰载机的引擎一样。而对于存储引擎,也是一样,他是mysql数据库的核心,我们也需要在合适的场景选择合适的存储引擎。接下来就来介绍一下存储引擎。存储引擎就是存储数据、建立索引、更新查询数据等技术的实现方式。原创 2024-12-26 07:55:52 · 257 阅读 · 0 评论 -
第十一章 事务
事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。比如张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。正常情况转账这个操作需要分为以下这么三步来完成三步完成之后张三减少1000,而李四增加1000,转账成功异常情况转账这个操作也是分为以下这么三步来完成。原创 2024-12-26 07:49:20 · 794 阅读 · 0 评论 -
第十章 多表查询
我们在前面几个章节讲解SQL语句的时候,涉及到了DQL语句即数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作。是指在数据库查询中涉及多个表的操作,通过连接运算来获取多个表中的数据。多表查询主要包括内连接、外连接、自连接等多种方式。在项目开发中,数据库表结构设计通常根据业务需求及模块之间的关系进行设计。常见的表关系有一对多、多对多和一对一。例如,部门与员工的关系是一对多关系,一个部门对应多个员工;原创 2024-12-18 23:13:35 · 314 阅读 · 0 评论 -
第九章 约束
用讲就是,指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS即数据库管理系统(Database Management System)自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。数据完整性约束是一组完整性规则的集合。、参照完整性、用户定义完整性。三者都满足即满足了数据完整性约束。因此本概念的定义是一个描述性定义。我们的话,约束是作用于表中字段上的规则,用于限制存储在表中的数据。原创 2024-12-17 23:12:39 · 719 阅读 · 0 评论 -
第八章 函数
它们可以分为单行函数和多行函数(聚合函数),前者对单行数据进行运算并返回结果,后者则对多行数据进行处理并返回一个结果。。原创 2024-12-17 07:42:08 · 1109 阅读 · 0 评论 -
第七章 DCL
DCL英文全称是数据控制语言是一种用于控制数据访问权限的语言,主要用于管理数据库中的用户权限。DCL的主要功能是通过SQL语句来授予或撤销用户对数据库对象的访问权限。二、管理用户。原创 2024-12-14 22:35:55 · 744 阅读 · 0 评论 -
第六章 DQL
DQL英文全称是数据查询语言,用来查询数据库中表的记录。--例如:找出emp表中员工号为007的员工的工资:在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。原创 2024-12-14 22:06:59 · 810 阅读 · 0 评论 -
第五章 DML
语言中,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。在使用数据库的系统开发过程中,其中应用程序必然会使用的指令;而加上 SQL的SELECT语句,欧美地区的开发人员把这四种指令,以“数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集,例如在信息软件产业通行标准的。表所有的字段添加数据。原创 2024-12-11 07:33:49 · 890 阅读 · 0 评论 -
第四章 DDL
目录一、DDL概念二、DDL数据库操作2.1. 查询所有数据库2.2. 查询当前数据库2.3. 创建数据库三、数据库操作示例3.1. 创建数据库3.2. if not exists3.3. 创建库并指定字符集3.4. 删除数据库3.5. 切换数据库四、表/表结构查询与创建4.1. 查询当前数据库所有表4.2. 查看指定表结构4.3. 查询指定表的建表语句4.4. 创建表结构4.5. 数据类型4.5.1. 数值类型4.5.2. 字符串类型4.5.3. 日期时间类型4.6. 数据类型示例五、表修改5.1. 添加原创 2024-12-10 23:03:51 · 1086 阅读 · 0 评论 -
第三章 SQL
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,作为数据库查询和,用于存取数据以及查询、更新和管理。即操作关系型数据库的编程语言,定义了一套操作关系型数据库统一。结构化查询语言是高级的非过程化,允许用户在高层上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。原创 2024-12-08 22:45:42 · 645 阅读 · 0 评论 -
第二章 MySQL版本和Windows安装
从MySQL官网我们可以看到安装的版本只有32位的,其实这个32位安装包里包含了64位,在我们下载安装的时候便可以看到。:安装MySQL所有的产品和功能,包括服务器、客户端工具等,适合需要完整MySQL功能的用户。:这是默认安装类型,会安装MySQL开发所需的所有产品,适合开发者使用。:仅安装MySQL客户端工具,适合只需要使用MySQL客户端工具的用户。:允许用户自定义安装产品,可以选择安装哪些组件,适合需要灵活安装的用户。的相关组件,这个过程可能需要耗时几分钟,耐心等待。原创 2024-12-08 22:01:46 · 1066 阅读 · 0 评论 -
第一章 初识MySQL
数据库是在 20 世纪 60 年代末发展起来的一项重要技术,20 世纪 70 年代以来数据库技术得到迅猛发展,已经成为计算机科学与技术的一个重要分支。数据库技术和系统已经成为信息基础设施的核心技术和重要基础,数据库技术作为数据管理的最有效的手段,极大地促进了计算机应用的发展。。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库技术主要是用来解决数据处理的非数值计算问题,其主要功能包括数据的存储、查询、修改、排序和统计等。原创 2024-12-08 20:27:56 · 956 阅读 · 0 评论 -
MySQL之添加联合唯一索引
场景:库中有一张用户产品信息表 t_user_product_info表:表中有主键自增长id,user_id,product_id,validate_time,create_time,updated_time五个字段,其中user_id和product_id分别是用户和产品信息表的主键自增长id。t_user_product_info表中,通过user_id和prodcut_id两个...原创 2019-10-25 09:34:04 · 6688 阅读 · 0 评论 -
MySQL密码忘记后怎么办?
1、打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址2、打开cmd命令提示符,进入上一步mysql.exe所在的文件夹。3、输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行。注意:在输入此命令之前先在任务管理器中结束mysqld.exe...转载 2019-02-12 16:32:59 · 161 阅读 · 0 评论 -
MyBatis与MySQL对应数据类型
1、常用数据类型映射表:MySQL JDBCType JavaType 备注 char CHAR String 定长字符 varchar VARCHAR String 变长字符串 tinyint TINYINT byte 1字节 smallint SMALLINT sho...转载 2019-04-30 15:48:14 · 2582 阅读 · 0 评论 -
MySQL中CHAR,VARCHAR与TEXT类型的区别和选用
CHAR,VARCHAR,TEXT是数据库服务器对数据类型进行划分的方式,是数据在数据库中的存放策略,同时为了合理应用数据库存储空间问题。对于Java应用程序,把它们和String类型对应就可以了。(1)CHAR:定长格式,长度范围是0~255。当你想要储存一个长度不足255的字符时,MySQL会用空格来填充剩下的字符。因此在读取数据时,CHAR类型的数据要进行处理,把后面的空...转载 2019-04-30 16:06:54 · 374 阅读 · 0 评论 -
一、深入浅出MySQL、数据库开发、优化与管理维护(SQL基础)
一、SQL简介SQL(Structure Query Language)结构化查询语言,是使用关系模型的数据库应用语言,由IBM在20世纪70年代开发,其作为IBM关系数据库原型System R的原型关系语言,实现了关系数据库的信息检索。后由ANSI(美国国家标准局)制定SQL标准并日趋完善。二、SQL分类DDL(Data Definition Languages)语句:数据定义语言,...原创 2019-05-14 14:31:38 · 1784 阅读 · 0 评论 -
二、深入浅出MySQL、数据库开发、优化与管理维护(MySQL支持的数据类型)
摘要:数据类型用来指定一定的存储格式、约束和有效范围。MySQL提供的数据类型主要包括:数值型、字符串型、日期型、时间型。其中MySQL的不同版本支持的数据类型会稍有不同,本章节以MySQL5.0为例。一、数值类型MySQL支持标准SQL中的所有数值类型,包括如下严格数值类型:INTEGER SMALLINT DECIMAL NUMERIC近似数值数据类型:FLOAT...原创 2019-05-15 13:56:18 · 211 阅读 · 0 评论 -
推荐几本学习MySQL的好书
推荐几本学习MySQL的好书转载:http://mingxinglai.com/cn/2015/12/material-of-mysql/虽然我自己目前还不是大牛,不过正走在成为大牛的路上。我个人比较幸运,实习的时候在登博(何登成)手下实习,从登博那里学到不少东西,毕业以后,有幸投奔另一位MySQL大牛姜sir(姜承尧),目前还在姜sir手下工作,对目前的工作状态比较满意(我们组持续招人中...转载 2019-05-13 16:36:17 · 861 阅读 · 0 评论 -
使用MySQL存储过程,为128个分表新增或删除字段
本文作者通过Navicat图形化客户端工具操作MySQL数据库,使用其他工具操作与之类似。一、点击函数二、新建函数三、选择过程四、点击完成五、书写新增字段函数BEGIN DECLARE i INT; SET i = 0; WHILE i < 128 DO SET @_SQL = CONCAT('ALTER TABLE t_user_info...原创 2019-08-28 09:26:14 · 821 阅读 · 0 评论 -
MySQL存储引擎(表类型)的选择
一、MySQL存储引擎概述 MySQL与多数数据库不同的是包含存储引擎这一特性,用户可以根据应用的需要选择合适的存储引擎来使存储和索引数据,以及是否使用事务等。MySQL5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。其中InnoDB和BDB提...原创 2018-09-19 23:32:29 · 3321 阅读 · 0 评论