前言
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日
w6OGfabDKDAeVc3/1aUrVY3vPOjvtMW886atC9xkdXHIr7pNNUzwP0Qm6mpXmnQZ