大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。
本文深入讲解了MySQL的巨作:《像程序员一样使用MySQL》,希望能对学习MySQL的同学们有所帮助。
文章目录
- 1. 前言
- 2. 书籍推荐
-
- 2.1 内容简介
- 2.2 本书特色
- 2.3 作者简介
- 2.4 本书目录
- 2.5 适合读者
- 3. 购买链接
1. 前言
MySQL在如今的企业开发中占据着十分重要的地位,成为目前世界上流行的开源关系数据库。一路走来,笔者经历过的项目无一例外都是使用MySQL。熟练使用MySQL数据库,是研发工程师和数据库工程师的必备技能之一,MySQL相关的知识常常被作为面试题的一部分。本书总结了笔者多年使用MySQL的实践经验,可供读者高效学习MySQL并掌握其在开发中的核心知识点和应用技能。
本书第1~4章主要介绍MySQL基础的SQL语法知识,包括MySQL数据库如何安装、数据类型和表达式、运算符和变量等内容。第5~9章主要介绍select查询、索引、事务、存储过程、视图,以及如何进行数据备份、数据恢复和用户权限管理。第10~14章讲解MySQL高级特性,包括MySQL日志、锁、分库分表以及SQL性能优化和字符集。附录部分介绍本书涉及的SQL脚本、词汇解释,以及在面试中常见的高频问题。
2. 书籍推荐
2.1 内容简介
《像程序员一样使用MySQL》内容简介如下:
本书涵盖MySQL的基础知识、日常工作中用到的数据库知识以及MySQL高级的特性。全书 共14章和4个附录,各章内容概述如下:
第1章介绍MySQL是什么、macOS和Windows操作系统如何安装MySQL、MySQL客户端(Workbench、DataGrip)的安装,以及如何通过命令行工具连接MySQL。
第2章介绍数据库操作(创建第一个数据库,更新数据库名称、删除数据库与表操作(创建表、表数据插入、建表规范、慎重删除表和数据、修改表和表结构以及表结构/表数据导出)。
第3章介绍MySQL常用的数据类型(数值数据类型、日期和时间类型以及字符串数据类型)。数值数据类型包括整数类型、浮点型类型、定点型类型、bit类型;日期和时间类型包括日期类型和时间类型;字符串数据类型包括char和varchar类型、blob和text类型、enum和set类型以及JSON类型。
第4章介绍MySQL运算符函数和变量。运算符包括运算符优先级、比较运算符和函数、逻辑运算符、赋值运算符。函数主要包括字符串函数、数学函数、日期和时间函数、聚合函数、流程控制函数、强制转换函数、加密函数和信息函数。
第5章介绍select查询,主要包括select简单查询、where条件查询、数据排序order by、数据分组group by、分组后过滤having、union组合查询、子查询以及连接查询等内容。
第6章介绍索引的相关内容,包括什么是索引;索引的增、删、改、查,索引类型。其中索引类型包括主键索引、唯一索引、普通索引以及前缀索引等。
第7章介绍事务的四大特性(ACID)、如何使用事务以及事务的四种隔离级别,即读未提交、读已提交、可重复读和串行化。
第8章主要介绍MySQL的视图与存储过程这两部分内容,其中视图包括视图概述,视图的增、删、改、查,视图的应用场景和优缺点;存储过程包括存储过程的增、删、改、查,存储过程与流程控制语句,存储过程的应用场景与优缺点。
第9章主要介绍MySQL用户管理、角色管理、权限管理及授权、数据备份、数据恢复等内容。
第10章主要介绍如何设计数据库,内容包括关联关系(一对一、一对多、多对多以及自关联)、E-R实体关系模型、数据表设计三范式、数据库设计流程以及教务管理系统案例等。
第11章主要介绍MySQL数据库日志,包括错误日志、普通查询日志、慢查询日志、二进制日志、Undo日志、Redo日志以及Relay Log日志,最后介绍主从模式与主从同步等内容。
第12章主要介绍MySQL锁,包括共享锁和独占锁、全局锁、表级锁(表锁、元数据锁、意向锁、AUTO-INC锁)、行锁(记录锁、间隙锁与临键锁Next-key Lock、插入意向锁)以及悲观锁和乐观锁。
第13章主要介绍MySQL的分库、分表、分组的相关内容。
第14章主要介绍explain执行计划、show profile以及慢SQL优化(索引失效优化、插入性能优化)与字符集等内容。
2.2 本书特色
在当今快速发展的信息技术领域,MySQL数据库管理技能成为了IT专业人士的必备。为了帮助读者掌握这一关键技能,我们精心编写了一本全面而系统的教程,专注于MySQL数据库的设计、优化和管理。本书不仅结构合理,内容全面,而且通过深入浅出的叙述,带领读者从基础到前沿,逐步深入数据库管理的每个环节。
为了让数据库学习变得更加直观和易懂,本书采用了图文结合的方式,提供了大量的数据库架构图和查询结果示例。读者可以通过观察架构图和结果示例,更快速地理解数据库设计概念和查询逻辑。
本书结合了丰富的实际数据库案例,让读者在掌握理论知识的同时,能够通过案例实践来提升自己的技能。每个案例都配有完整的SQL脚本和详尽的注释,帮助读者更好地理解查询逻辑,加深对数据库管理的认识。
为了鼓励读者进行实践操作,提高动手能力,本书提供了所有示例的SQL脚本。这些脚本完全开放,读者可以自由地在数据库管理工具中输入和测试这些脚本。通过亲自编写和运行SQL查询,读者能够更深刻地理解数据库操作的过程,从而在实践中学习和成长。
本书以实战为主旨,通过介绍MySQL数据库中常用的数据类型、索引优化、事务处理等原生功能和典型的项目案例,使读者系统地掌握数据库的核心技能。
2.3 作者简介
黄文毅,架构师,从业近十年,先后就职于上海美团、厦门美图和海西医药等公司,从事Java开发工作,目前就职于某国内大型企业从事大数据和后端研发,对于Java后端开发及MySQL等各类数据库的有着十分丰富的经验。
著有图书:《分布高可用架构之道》《Spring 5企业级开发实战》(与人合著)等图书。
2.4 本书目录
第 1 章 初识MySQL 1
1.1 安装MySQL 1
1.1.1 在macOS上安装MySQL 2
1.1.2 在Windows上安装MySQL 6
1.2 如何选择MySQL客户端 10
1.2.1 在macOS上安装Workbench 10
1.2.2 在macOS上安装DataGrip 12
1.2.3 在Windows上安装
Workbench 14
1.2.4 命令行连接MySQL 14
第 2 章 数据库与表的创建 17
2.1 数据库操作 17
2.1.1 创建第一个数据库 18
2.1.2 更新数据库名称 20
2.1.3 删除数据库 21
2.1.4 取个合适的数据库名称 22
2.2 表操作 23
2.2.1 创建第一张表 23
2.2.2 表数据插入 26
2.2.3 建表规约 28
2.2.4 慎重删除表和数据 29
2.2.5 修改表和表结构 31
2.2.6 表结构/表数据导出 35
第 3 章 MySQL常用数据类型 38
3.1 数值数据类型 38
3.1.1 整数类型 38
3.1.2 浮点数类型 40
3.1.3 定点数类型 42
3.1.4 bit类型 43
3.1.5 数值类型属性 44
3.1.6 超出范围和溢出处理 44
3.2 日期和时间类型 46
3.2.1 时间小数秒精确度 47
3.2.2 日期和时间类型转换 48
3.3 字符串数据类型 49
3.3.1 char和varchar类型 50
3.3.2 blob和text类型 51
3.3.3 enum和set类型 52
3.3.4 JSON类型 53
3.3.5 数据类型默认值 57
第 4 章 运算符、函数与变量 59
4.1 运算符 59
4.1.1 运算符优先级 59
4.1.2 比较运算符和函数 60
4.1.3 逻辑运算符 62
4.1.4 赋值运算符 63
4.2 函数 65
4.2.1 字符串函数 65
4.2.2 数学函数 67
4.2.3 日期和时间函数 68
4.2.4 聚合函数 72
4.2.5 流程控制函数 73
4.2.6 强制类型转换函数 74
4.2.7 加密函数 75
4.2.8 信息函数 77
4.3 变量 78
第 5 章 select查询 80
5.1 select简单查询 80
5.1.1 无表查询 80
5.1.2 指定列查询 81
5.1.3 limit指定行和分页查询 81
5.2 where条件查询 83
5.2.1 使用where子句 83
5.2.2 where单值查询 84
5.2.3 范围和区间查询 85
5.2.4 模糊查询 86
5.2.5 空值查询 86
5.2.6 where多值查询 87
5.3 数据排序order by 88
5.4 数据分组group by 89
5.5 分组后过滤having 91
5.6 组合查询union 92
5.7 子查询 96
5.8 连接查询 98
第 6 章 索引 102
6.1 认识索引 102
6.1.1 什么是索引 102
6.1.2 索引的种类 104
6.1.3 索引增、删、改、查 105
6.2 索引类型 108
6.2.1 主键及主键索引 108
6.2.2 唯一索引 109
6.2.3 普通的单字段索引 110
6.2.4 普通的组合索引 110
6.2.5 前缀索引 112
第 7 章 MySQL事务 114
7.1 事务的4大特性 114
7.2 使用事务 116
7.3 事务的4种隔离级别 120
第 8 章 MySQL视图和存储过程 127
8.1 视图 127
8.1.1 视图的使用场景 127
8.1.2 视图的增、删、改、查 128
8.1.3 使用视图的注意事项 130
8.2 存储过程 131
8.2.1 存储过程的增、删、改、查 131
8.2.2 存储过程与流程控制语句
搭配使用 134
8.2.3 应用场景与优缺点 135
第 9 章 用户权限管理及 数据备份与恢复 136
9.1 用户权限管理 136
9.1.1 用户管理 136
9.1.2 角色管理 138
9.1.3 权限管理及授权 139
9.2 数据备份 141
9.2.1 mysqldump概述 141
9.2.2 mysqldump数据备份 142
9.3 数据恢复 145
第 10 章 数据库设计 147
10.1 关联关系 147
10.1.1 一对一 147
10.1.2 一对多 149
10.1.3 多对多 149
10.1.4 自关联 150
10.2 E-R实体关系模型 150
10.3 数据表设计三范式 152
10.4 数据库设计流程 153
10.5 教务管理系统数据库设计案例 154
10.5.1 需求分析 154
10.5.2 设计 155
10.5.3 实现 159
第 11 章 数据库日志 161
11.1 MySQL的几种日志 161
11.2 了解错误日志 162
11.3 了解普通查询日志 162
11.4 了解慢查询日志 164
11.5 了解二进制日志 166
11.6 了解撤销日志 167
11.7 了解重做日志 167
11.8 了解中继日志 168
11.9 主从模式与主从同步 168
第 12 章 MySQL锁 172
12.1 MySQL锁及分类 172
12.2 共享锁和独占锁 172
12.3 全局锁 174
12.4 表级锁 176
12.4.1 表锁 176
12.4.2 元数据锁 178
12.4.3 意向锁 180
12.4.4 自增锁 183
12.5 行锁 183
12.5.1 记录锁 184
12.5.2 间隙锁与临键锁 185
12.5.3 插入意向锁 189
12.6 悲观锁和乐观锁 191
第 13 章 MySQL分库分表 193
13.1 分库 193
13.2 分表 194
13.3 切分方式 194
13.3.1 水平切分的方式 194
13.3.2 垂直切分的方式 196
13.4 分组 196
第 14 章 SQL性能优化与字符集 198
14.1 SQL优化工具 198
14.1.1 explain执行计划 198
14.1.2 show profile 200
14.2 慢SQL优化 204
14.2.1 表无任何索引 204
14.2.2 索引失效优化 205
14.2.3 使用索引覆盖优化 209
14.2.4 插入性能优化 209
14.2.5 优化select count(*) 212
14.2.6 select*语句优化 213
14.3 字符集 214
14.3.1 字符集概述 214
14.3.2 设置适当的字符集 214
14.3.3 设置默认字符集 215
14.3.4 转换字符集 215
附录A MySQL数据 216
附录B 词汇解释 217
附录C MySQL高频面试题 219
附录D 练习题 223
参考文献 226
2.5 适合读者
本书适合软件开发人员和DBA使用。此外,本书也非常适合高等教育机构的学生,特别是那些正在学习计算机科学或相关专业的学生,因为它不仅包含了理论知识,还提供了实践应用,有助于学生更好地理解MySQL,并为将来的职业生涯打下坚实的基础。
无论你是初学者还是有一定基础的专业人士,本书都将是你的宝贵资源,帮助你在全栈开发的道路上更进一步。
3. 购买链接
本书的京东购买链接为:像程序员一样使用MySQL。