商品详情

本书是一本MySQL实战经验分享,作者是拥有近十年开发经验的后端;老司机,向读者介绍了正确高效使用MySQL的经验技巧。书中首先介绍了MySQL的bi备知识,适合正确学习MySQL的新人入手,然后介绍了MySQL在数据库设计、分库分表、日志、锁、性能优化等有关MySQL的高级技能,有助于读者了解MySQL在实际项目开发中的应用。本书集原理、经验与实战范例于一体,有助于读者尽快提升MySQL的应用水平,此外,书中还给出了编者在实际工作中参与面试的一些MySQL高频面试题,可以帮助有面试需求的读者通过本书获得经验。

熟练使用MySQL数据库,是研发工程师和数据库工程师的bi备技能之一。本书从程序员的视角介绍了MySQL数据库在实际开发中的核心知识和应用技能。全书共14章。第1章主要讲解MySQL数据库以及客户端工具的安装;第2~4章主要介绍数据库与表的创建、数据类型与表达式,以及函数、运算符与变量;第5章主要讲解select查询语句、子查询以及连接查询;第6章主要讲解索引和索引类型;第7、8章主要介绍MySQL事务的ACID特性、事务的四种隔离级别、如何使用事务、存储过程和视图概述,以及如何使用存储过程和视图;第9章介绍MySQL用户权限管理以及数据备份与恢复;第10章介绍如何设计数据库,包括关联关系、E_R实体关系模型;第11~13章主要介绍MySQL日志、锁以及分库分表;第14章介绍SQL性能优化与字符集。附录部分包含本书用到的SQL脚本、词汇解释以及高频面试题。本书适合所有计算机专业的学生、软件开发人员,以及DBA使用,也可作为培训机构MySQL教学的参考书。

黄文毅,架构师,从业近十年,先后就职于上海美团、厦门美图和海西医药等公司,从事Java开发工作,目前就职于某国内大型企业从事大数据和后端研发,对于Java后端开发及MySQL等各类数据库的有着十分丰富的经验。著有图书:《分布高可用架构之道》《Spring 5企业级开发实战》(与人合著)等图书。

第 1 章 初识MySQL 11.1 安装MySQL 11.1.1 在macOS上安装MySQL 21.1.2 在Windows上安装MySQL 61.2 如何选择MySQL客户端 101.2.1 在macOS上安装Workbench 101.2.2 在macOS上安装DataGrip 121.2.3 在Windows上安装Workbench 141.2.4 命令行连接MySQL 14第 2 章 数据库与表的创建 172.1 数据库操作 172.1.1 创建第一个数据库 182.1.2 更新数据库名称 202.1.3 删除数据库 212.1.4 取个合适的数据库名称 222.2 表操作 232.2.1 创建第一张表 232.2.2 表数据插入 262.2.3 建表规约 282.2.4 慎重删除表和数据 292.2.5 修改表和表结构 312.2.6 表结构/表数据导出 35第 3 章 MySQL常用数据类型 383.1 数值数据类型 383.1.1 整数类型 383.1.2 浮点数类型 403.1.3 定点数类型 423.1.4 bit类型 433.1.5 数值类型属性 443.1.6 超出范围和溢出处理 443.2 日期和时间类型 463.2.1 时间小数秒精确度 473.2.2 日期和时间类型转换 483.3 字符串数据类型 493.3.1 char和varchar类型 503.3.2 blob和text类型 513.3.3 enum和set类型 523.3.4 JSON类型 533.3.5 数据类型默认值 57第 4 章 运算符、函数与变量 594.1 运算符 594.1.1 运算符优先级 594.1.2 比较运算符和函数 604.1.3 逻辑运算符 624.1.4 赋值运算符 634.2 函数 654.2.1 字符串函数 654.2.2 数学函数 674.2.3 日期和时间函数 684.2.4 聚合函数 724.2.5 流程控制函数 734.2.6 强制类型转换函数 744.2.7 加密函数 754.2.8 信息函数 774.3 变量 78第 5 章 select查询 805.1 select简单查询 805.1.1 无表查询 805.1.2 指定列查询 815.1.3 limit指定行和分页查询 815.2 where条件查询 835.2.1 使用where子句 835.2.2 where单值查询 845.2.3 范围和区间查询 855.2.4 模糊查询 865.2.5 空值查询 865.2.6 where多值查询 875.3 数据排序order by 885.4 数据分组group by 895.5 分组后过滤having 915.6 组合查询union 925.7 子查询 965.8 连接查询 98第 6 章 索引 1026.1 认识索引 1026.1.1 什么是索引 1026.1.2 索引的种类 1046.1.3 索引增、删、改、查 1056.2 索引类型 1086.2.1 主键及主键索引 1086.2.2 唯一索引 1096.2.3 普通的单字段索引 1106.2.4 普通的组合索引 1106.2.5 前缀索引 112第 7 章 MySQL事务 1147.1 事务的4大特性 1147.2 使用事务 1167.3 事务的4种隔离级别 120第 8 章 MySQL视图和存储过程 1278.1 视图 1278.1.1 视图的使用场景 1278.1.2 视图的增、删、改、查 1288.1.3 使用视图的注意事项 1308.2 存储过程 1318.2.1 存储过程的增、删、改、查 1318.2.2 存储过程与流程控制语句搭配使用 1348.2.3 应用场景与优缺点 135第 9 章 用户权限管理及 数据备份与恢复 1369.1 用户权限管理 1369.1.1 用户管理 1369.1.2 角色管理 1389.1.3 权限管理及授权 1399.2 数据备份 1419.2.1 mysqldump概述 1419.2.2 mysqldump数据备份 1429.3 数据恢复 145第 10 章 数据库设计 14710.1 关联关系 14710.1.1 一对一 14710.1.2 一对多 14910.1.3 多对多 14910.1.4 自关联 15010.2 E_R实体关系模型 15010.3 数据表设计三范式 15210.4 数据库设计流程 15310.5 教务管理系统数据库设计案例 15410.5.1 需求分析 15410.5.2 设计 15510.5.3 实现 159第 11 章 数据库日志 16111.1 MySQL的几种日志 16111.2 了解错误日志 16211.3 了解普通查询日志 16211.4 了解慢查询日志 16411.5 了解二进制日志 16611.6 了解撤销日志 16711.7 了解重做日志 16711.8 了解中继日志 16811.9 主从模式与主从同步 168第 12 章 MySQL锁 17212.1 MySQL锁及分类 17212.2 共享锁和独占锁 17212.3 全局锁 17412.4 表级锁 17612.4.1 表锁 17612.4.2 元数据锁 17812.4.3 意向锁 18012.4.4 自增锁 18312.5 行锁 18312.5.1 记录锁 18412.5.2 间隙锁与临键锁 18512.5.3 插入意向锁 18912.6 悲观锁和乐观锁 191第 13 章 MySQL分库分表 19313.1 分库 19313.2 分表 19413.3 切分方式 19413.3.1 水平切分的方式 19413.3.2 垂直切分的方式 19613.4 分组 196第 14 章 SQL性能优化与字符集 19814.1 SQL优化工具 19814.1.1 explain执行计划 19814.1.2 show profile 20014.2 慢SQL优化 20414.2.1 表无任何索引 20414.2.2 索引失效优化 20514.2.3 使用索引覆盖优化 20914.2.4 插入性能优化 20914.2.5 优化select count(*) 21214.2.6 select*语句优化 21314.3 字符集 21414.3.1 字符集概述 21414.3.2 设置适当的字符集 21414.3.3 设置默认字符集 21514.3.4 转换字符集 215附录A MySQL数据 216附录B 词汇解释 217附录C MySQL高频面试题 219附录D 练习题 223参考文献 226
【前言】MySQL在如今的企业开发中占据着十分重要的地位,成为目前世界上流行的开源关系数据库。一路走来,笔者经历过的项目无一例外都是使用MySQL。熟练使用MySQL数据库,是研发工程师和数据库工程师的技能之一,MySQL相关的知识常常被作为面试题的一部分。本书总结了笔者多年使用MySQL的实践经验,可供读者高效学习MySQL并掌握其在开发中的核心知识点和应用技能。本书第1~4章主要介绍MySQL基础的SQL语法知识,包括MySQL数据库如何安装、数据类型和表达式、运算符和变量等内容。第5~9章主要介绍select查询、索引、事务、存储过程、视图,以及如何进行数据备份、数据恢复和用户权限管理。第10~14章讲解MySQL高级特性,包括MySQL日志、锁、分库分表以及SQL性能优化和字符集。附录部分介绍本书涉及的SQL脚本、词汇解释,以及在面试中常见的高频问题。本书结构本书涵盖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优化(索引失效优化、插入性能优化)与字符集等内容。?附录A主要提供书中使用到的SQL文件。?附录B提供词汇解释。?附录C提供MySQL高频面试题。?附录D提供练习题。本书预备知识操作系统读者应当掌握基本的操作系统,比如Windows操作系统或者macOS操作系统,能在个人计算机上熟练地安装和卸载软件,能运行计算机的命令行工具。本书使用的软件版本本书使用的开发环境如下:?操作系统macOS 10.14.3?操作系统Windows 10?开发工具DateGrip 2022.3.3?MySQL Workbench 8.0读者对象本书适合所有计算机专业的学生、软件开发人员和DBA使用。源代码下载为了方便读者学习本书,本书还提供了源代码。扫描下述二维码即可下载源代码。
如果读者在学习和下载本书的过程中遇到问题,可以发送邮件至booksaga@126.com,邮件主题写;像程序员一样使用MySQL。致谢本书能够顺利出版,首先感谢清华大学出版社的王金柱老师及背后的团队为本书的辛勤付出,这是我第八次和王金柱老师合作,每次合作都能让我感到轻松和快乐,也让我体会到写作是一件愉快的事情,我很享受这个过程。感谢我的家人,感谢他们一路的陪伴和督促,感谢他们对我工作的理解和支持,感谢他们对我生活无微不至的照顾,使我没有后顾之忧,全身心投入本书的写作中。限于笔者水平和写作时间,书中难免存在疏漏之处,欢迎读者批评指正。
黄文毅2023年3月15日
- 新华一城书集 (微信公众号认证)
- 上海新华书店官方微信书店
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...