
- 环境搭建:详细讲解MySQL 8.x在Windows和Linux平台的安装配置,解决初学者环境搭建难题。
- 基础操作:系统介绍数据库和数据表的基本操作、数据类型和运算符,帮助读者掌握核心语法。
- 高级功能:深入讲解索引、存储过程、视图、触发器等高级特性,提升数据库设计和开发能力。
- 性能优化:涵盖性能优化、锁定机制、服务器性能监控等,解决数据库运行缓慢和瓶颈问题。
- 安全管理:介绍权限与安全管理、日志、备份与还原,确保数据安全和业务连续性。
- MySQL初学者:对数据库一无所知,希望从零开始学习MySQL安装、操作和管理的入门读者。
- 数据库开发人员:需要掌握MySQL开发技术,编写高效SQL和存储过程的软件工程师。
- 数据库管理员:负责MySQL日常运维、性能优化、备份恢复和安全管理的DBA。
- 高校师生:计算机相关专业学生和教师,作为数据库课程的教学参考书。
- 循序渐进:建议按章节顺序阅读,从安装配置到基础操作,再到高级特性和性能优化,逐步深入。
- 动手实践:每章操作案例务必亲手执行,特别是安装配置和增删改查,通过实践巩固知识。
- 重点章节:第5章数据操作和第6章索引是核心,需熟练掌握;第12-15章性能优化部分可结合实际工作学习。
- 善用资源:结合源代码、教学视频和命令速查手册,遇到问题可加入QQ群或微信群交流。
- 完整知识:系统掌握MySQL 8.x的安装、配置、操作和管理的全部核心知识。
- 开发技能:能够编写复杂的SQL查询、存储过程和触发器,提升应用开发效率。
- 优化能力:学会性能监控和优化方法,解决数据库性能瓶颈,确保系统高效运行。
- 安全运维:掌握权限管理、备份恢复和日志分析,保障数据安全与业务连续性。
- 架构认知:了解高可用架构、复制和中间件,为构建稳健的数据库系统打下基础。
📖 书籍简介
MySQL被设计为一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Linux、Ubantu、Red Hat、Solaris、FreeBSD、Mac和Windows。开源MySQL数据库发展到今天,已经具有了非常广泛的用户基础,市场证明MySQL具有性能价格合适、使用灵活、应用广泛和具有良好支持的特点。
MySQL 8做了大量的改进,性能比MySQL 5.7快2倍!本书把MySQL 8的新特性分散到各章结合实例进行讲解并做提示,方便读者快速掌握MySQL数据库管理技术以及MySQL 8的新特性。
MySQL是比较受欢迎的开源关系型数据库之一。本书通过大量实用的操作案例,详细讲解MySQL 8.x数据库操作方法和技巧。本书配套资源提供了所有例子的源代码、PPT课件、培训班形式的同步教学视频、命令速查手册、QQ群与微信群答疑,以方便读者参考和自学。
本书共分25章。主要内容包括MySQL 8.x的安装与配置、数据库和数据表基本操作、数据类型和运算符、MySQL函数、数据的增删改查、索引的设计和使用、存储过程和函数、视图、触发器、存储引擎的选择、分区和事务控制、性能优化、锁定机制、服务器性能优化、性能监控、数据备份与还原、日志、权限与安全管理、高可用架构、复制、MySQL Utilities、MySQL Proxy。最后通过两个案例系统的数据库设计,进一步讲解MySQL在系统开发中的应用。本书注重实战操作,帮助读者循序渐进地掌握MySQL的各项管理与开发技术。
本书适合MySQL数据库初学者、MySQL数据库开发人员和MySQL数据库管理员,同时也能作为高等院校相关专业师生的教学用书。
李小威,软件开发经理,在软件开发领域有多年的开发经验,尤其擅长Java、PHP、关系数据库、Web前端等技术,具有很强的实战经验。著有多本畅销书《Vue.js 3.x高效前端开发(视频教学版)》《Vue.js 3.0从入门到精通(视频教学版)》《SQL Server 2017从零开始学(视频教学版)》《SQL基础教程(视频教学版)》《PostgreSQL 11从入门到精通(视频教学版)》《MySQL 5.7从零开始学(视频教学版)》等。
第1章 MySQL的安装与配置 1
1.1 什么是MySQL 1
1.1.1 客户端/服务器软件 1
1.1.2 MySQL版本 2
1.2 Windows平台下安装与配置MySQL 8.0 2
1.2.1 安装MySQL 8.0 2
1.2.2 配置MySQL 8.0 5
1.3 启动服务并登录MySQL数据库 9
1.3.1 启动MySQL服务 9
1.3.2 登录MySQL数据库 10
1.3.3 配置Path变量 11
1.4 MySQL常用图形管理工具 13
1.5 Linux平台下安装与配置MySQL 8.0 14
1.5.1 Linux操作系统下的MySQL版本介绍 14
1.5.2 安装和配置MySQL的RPM包 15
1.5.3 安装和配置MySQL的源码包 18
第2章 数据库和数据表的基本操作 19
2.1 创建数据库 19
2.2 删除数据库 20
2.3 创建数据表 21
2.3.1 创建表的语法形式 21
2.3.2 使用主键约束 22
2.3.3 使用外键约束 23
2.3.4 使用非空约束 24
2.3.5 使用唯一性约束 25
2.3.6 使用默认约束 25
2.3.7 设置表的属性值自动增加 26
2.4 查看数据表结构 27
2.4.1 查看表基本结构语句DESCRIBE 27
2.4.2 查看表详细结构语句SHOW CREATE TABLE 28
2.5 修改数据表 28
2.5.1 修改表名 29
2.5.2 修改字段的数据类型 29
2.5.3 修改字段名 30
2.5.4 添加字段 31
2.5.5 删除字段 33
2.5.6 修改字段的排列位置 34
2.5.7 删除表的外键约束 35
2.6 删除数据表 36
2.6.1 删除没有被关联的表 36
2.6.2 删除被其他表关联的主表 37
第3章 数据类型和运算符 39
3.1 MySQL数据类型介绍 39
3.1.1 整数类型 39
3.1.2 小数类型 41
3.1.3 日期与时间类型 42
3.1.4 文本字符串类型 52
3.1.5 二进制字符串类型 56
3.2 如何选择数据类型 59
3.3 常见运算符介绍 60
3.3.1 运算符概述 60
3.3.2 算术运算符 61
3.3.3 比较运算符 62
3.3.4 逻辑运算符 69
3.3.5 位运算符 71
3.3.6 运算符的优先级 74
第4章 MySQL函数 75
4.1 MySQL函数简介 75
4.2 数学函数 75
4.2.1 绝对值函数ABS(x)和返回圆周率的函数PI() 75
4.2.2 平方根函数SQRT(x)和求余函数MOD(x,y) 76
4.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x) 76
4.2.4 获取随机数的函数RAND()和RAND(x) 77
4.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 78
4.2.6 符号函数SIGN(x) 79
4.2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x) 79
4.2.8 对数运算函数LOG(x)和LOG10(x) 79
4.2.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 80
4.2.10 正弦函数SIN(x)和反正弦函数ASIN(x) 80
4.2.11 余弦函数COS(x)和反余弦函数ACOS(x) 81
4.2.12 正切函数、反正切函数和余切函数 81
4.3 字符串函数 82
4.3.1 计算字符串字符数的函数和字符串长度的函数 82
4.3.2 合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 83
4.3.3 替换字符串的函数INSERT(s1,x,len,s2) 83
4.3.4 字母大小写转换函数 84
4.3.5 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n) 85
4.3.6 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2) 85
4.3.7 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s) 86
4.3.8 删除指定字符串的函数TRIM(s1 FROM s) 86
4.3.9 重复生成字符串的函数REPEAT(s,n) 87
4.3.10 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2) 87
4.3.11 比较字符串大小的函数STRCMP(s1,s2) 88
4.3.12 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len) 88
4.3.13 匹配子串开始位置的函数 89
4.3.14 字符串逆序的函数REVERSE(s) 89
4.3.15 返回指定位置的字符串的函数 89
4.3.16 返回指定字符串位置的函数FIELD(s,s1,s2,…,sn) 90
4.3.17 返回子串位置的函数FIND_IN_SET(s1,s2) 90
4.3.18 选取字符串的函数MAKE_SET(x,s1,s2,…,sn) 90
4.4 日期和时间函数 91
4.4.1 获取当前日期的函数和获取当前时间的函数 91
4.4.2 获取当前日期和时间的函数 92
4.4.3 UNIX时间戳函数 92
4.4.4 返回UTC日期的函数和返回UTC时间的函数 92
4.4.5 获取月份的函数MONTH(date)和MONTHNAME(date) 93
4.4.6 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 93
4.4.7 获取星期数的函数WEEK(d)和WEEKOFYEAR(d) 94
4.4.8 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 95
4.4.9 获取年份、季度、小时、分钟和秒钟的函数 96
4.4.10 获取日期的指定值的函数EXTRACT(type FROM date) 96
4.4.11 时间和秒钟转换的函数 97
4.4.12 计算日期和时间的函数 97
4.4.13 将日期和时间格式化的函数 100
4.5 条件判断函数 102
4.5.1 IF(expr,v1,v2)函数 102
4.5.2 IFNULL(v1,v2)函数 103
4.5.3 CASE函数 103
4.6 系统信息函数 104
4.6.1 获取MySQL版本号、连接数和数据库名的函数 104
4.6.2 获取用户名的函数 106
4.6.3 获取字符串的字符集和排序方式的函数 106
4.6.4 获取最后一个自动生成的ID值的函数 107
4.7 加密函数 108
4.7.1 加密函数MD5(str) 108
4.7.2 加密函数SHA(str) 108
4.7.3 加密函数SHA2(str, hash_length) 109
4.8 其他函数 109
4.8.1 格式化函数FORMAT(x,n) 109
4.8.2 不同进制的数字进行转换的函数 109
4.8.3 IP地址与数字相互转换的函数 110
4.8.4 加锁函数和解锁函数 111
4.8.5 重复执行指定操作的函数 111
4.8.6 改变字符集的函数 112
4.8.7 改变数据类型的函数 112
4.9 窗口函数 113
第5章 查询数据 115
5.1 基本查询语句 115
5.2 单表查询 117
5.2.1 查询所有字段 117
5.2.2 查询指定字段 118
5.2.3 查询指定记录 120
5.2.4 带IN关键字的查询 121
5.2.5 带BETWEEN…AND…的范围查询 122
5.2.6 带LIKE的字符匹配查询 123
5.2.7 查询空值 124
5.2.8 带AND的多条件查询 126
5.2.9 带OR的多条件查询 126
5.2.10 查询结果不重复 127
5.2.11 对查询结果排序 128
5.2.12 分组查询 131
5.2.13 使用LIMIT限制查询结果的数量 136
5.3 使用集合函数查询 137
5.3.1 COUNT()函数 137
5.3.2 SUM()函数 138
5.3.3 AVG()函数 139
5.3.4 MAX()函数 140
5.3.5 MIN()函数 141
5.4 连接查询 141
5.4.1 内连接查询 142
5.4.2 外连接查询 144
5.4.3 复合条件连接查询 146
5.5 子查询 147
5.5.1 带ANY、SOME关键字的子查询 147
5.5.2 带ALL关键字的子查询 147
5.5.3 带EXISTS关键字的子查询 148
5.5.4 带IN关键字的子查询 149
5.5.5 带比较运算符的子查询 151
5.6 合并查询结果 152
5.7 为表和字段取别名 154
5.7.1 为表取别名 154
5.7.2 为字段取别名 155
5.8 使用正则表达式查询 157
5.8.1 查询以特定字符或字符串开头的记录 157
5.8.2 查询以特定字符或字符串结尾的记录 158
5.8.3 用符号“.”来替代字符串中的任意一个字符 158
5.8.4 使用“*”和“+”来匹配多个字符 159
5.8.5 匹配指定字符串 159
5.8.6 匹配指定字符中的任意一个 160
5.8.7 匹配指定字符以外的字符 161
5.8.8 使用{n,}或者{n,m}来指定字符串连续出现的次数 162
5.9 通用表表达式 162
第6章 插入、更新与删除数据 166
6.1 插入数据 166
6.1.1 为表的所有字段插入数据 166
6.1.2 为表的指定字段插入数据 168
6.1.3 同时插入多条记录 169
6.1.4 将查询结果插入到表中 170
6.2 更新数据 172
6.3 删除数据 173
6.4 为表增加计算列 175
6.5 DDL的原子化 176
第7章 索引的设计和使用 178
7.1 索引简介 178
7.1.1 索引的含义和特点 178
7.1.2 索引的分类 179
7.1.3 索引的设计原则 180
7.2 创建索引 180
7.2.1 创建表的时候创建索引 180
7.2.2 在已经存在的表上创建索引 185
7.3 删除索引 191
7.4 统计直方图 193
7.4.1 直方图的优点 193
7.4.2 直方图的基本操作 193
第8章 存储过程和函数 195
8.1 创建存储过程和函数 195
8.1.1 创建存储过程 195
8.1.2 创建存储函数 197
8.1.3 变量的使用 198
8.1.4 定义条件和处理程序 199
8.1.5 光标的使用 202
8.1.6 流程控制的使用 203
8.2 调用存储过程和函数 207
8.2.1 调用存储过程 207
8.2.2 调用存储函数 208
8.3 查看存储过程和函数 208
8.3.1 使用SHOW STATUS语句查看存储过程和函数的状态 208
8.3.2 使用SHOW CREATE语句查看存储过程和函数的定义 209
8.3.3 从information_schema.Routines表中查看存储过程和函数的信息 210
8.4 修改存储过程和函数 211
8.5 删除存储过程和函数 212
8.6 全局变量的持久化 213
第9章 视图 214
9.1 视图概述 214
9.1.1 视图的含义 214
9.1.2 视图的作用 215
9.2 创建视图 215
9.2.1 创建视图的语法形式 216
9.2.2 在单表上创建视图 216
9.2.3 在多表上创建视图 217
9.3 查看视图 218
9.3.1 使用DESCRIBE语句查看视图基本信息 218
9.3.2 使用SHOW TABLE STATUS语句查看视图基本信息 218
9.3.3 使用SHOW CREATE VIEW语句查看视图详细信息 219
9.3.4 在views表中查看视图详细信息 220
9.4 修改视图 221
9.4.1 使用CREATE OR REPLACE VIEW语句修改视图 221
9.4.2 使用ALTER语句修改视图 222
9.5 更新视图 222
9.6 删除视图 225
第10章 MySQL触发器 226
10.1 创建触发器 226
10.1.1 创建只有一个执行语句的触发器 226
10.1.2 创建有多个执行语句的触发器 227
10.2 查看触发器 229
10.2.1 利用SHOW TRIGGERS语句查看触发器信息 229
10.2.2 在triggers表中查看触发器信息 231
10.3 触发器的使用 232
10.4 删除触发器 233
第11章 存储引擎的选择 234
11.1 MySQL的架构 234
11.1.1 MySQL物理文件的组成 235
11.1.2 MySQL各逻辑块简介 237
11.1.3 MySQL各逻辑块协调工作 239
11.2 MySQL存储引擎简介 240
11.3 更改数据表的存储引擎 242
11.4 各种存储引擎的特性 242
11.4.1 MyISAM 243
11.4.2 InnoDB存储引擎 245
11.4.3 MEMORY 247
11.4.4 MERGE 248
11.5 选择合适的存储引擎 250
第12章 MySQL分区和事务控制 252
12.1 合并表 252
12.2 分区表 254
12.2.1 认识分区表 254
12.2.2 RANGE分区 254
12.2.3 LIST分区 256
12.2.4 HASH分区 257
12.2.5 线性HASH分区 257
12.2.6 KEY分区 258
12.2.7 复合分区 259
12.3 事务控制 261
12.4 MySQL分布式事务 264
12.4.1 分布式事务的原理 264
12.4.2 分布式事务的语法 265
第13章 MySQL性能优化 267
13.1 优化简介 267
13.2 优化查询 268
13.2.1 分析查询语句 268
13.2.2 索引对查询速度的影响 271
13.2.3 使用索引查询 272
13.2.4 优化子查询 274
13.3 优化数据库结构 274
13.3.1 将字段很多的表分解成多个表 274
13.3.2 增加中间表 276
13.3.3 增加冗余字段 277
13.3.4 优化插入记录的速度 277
13.3.5 分析表、检查表和优化表 279
13.4 临时表性能优化 281
13.5 创建全局通用表空间 282
13.6 隐藏和显示索引 283
本书是面向MySQL数据库管理系统初学者的一本高质量的入门书。目前国内对掌握MySQL的人才需求旺盛,各大知名企业高薪招聘技术能力强的MySQL开发人员和管理人员。本书根据这样的需求,为初学者量身定做,内容注重实战,通过实例的操作与分析,引领读者快速掌握MySQL开发和管理技术。
本书内容
第1章主要介绍MySQL的安装与配置,包括MySQL基本概念、Windows平台下的安装和配置、如何启动MySQL服务、MySQL常用图形管理工具、Linux平台下的安装和配置等。
第2章介绍数据库和数据表的基本操作,主要包括创建数据库、删除数据库、创建数据表、查看数据表结构、修改数据表和删除数据表。
第3章介绍数据类型和运算符,主要包括MySQL数据类型介绍、如何选择数据类型和常见运算符介绍。
第4章介绍MySQL函数,包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、其他函数和窗口函数。
第5章介绍如何查询数据表中的数据,主要包括基本查询语句、单表查询、使用聚合函数查询、连接查询、子查询、合并查询结果、为表和字段取别名以及使用正则表达式查询。
第6章介绍如何插入、更新与删除数据,包括插入数据、更新数据、删除数据。
第7章介绍MySQL中的索引设计和使用,包括索引简介、如何创建各种类型的索引和如何删除索引。
第8章介绍MySQL中的存储过程和函数,包括存储过程和函数的创建、调用、查看、修改和删除。
第9章介绍MySQL视图,主要介绍视图的概念、创建视图、查看视图、修改视图、更新视图和删除视图。
第10章介绍MySQL触发器,包括创建触发器、查看触发器、触发器的使用和删除触发器。
第11章介绍存储引擎的选择,包括MySQL的架构、MySQL存储引擎简介、更改数据表的存储引擎、各种存储引擎的特性和选择合适的存储引擎。
第12章介绍MySQL分区和事务控制,包括合并表、分区表、事务控制、MySQL分布式事务。
第13章介绍如何对MySQL进行性能优化,包括优化简介、优化查询、优化数据库结构、临时表性能优化、创建全局通用表空间和隐藏和显示索引。
第14章介绍MySQL的锁定机制,包括认识MySQL的锁定机制、MyISAM的锁定机制、InnoDB的锁定机制、跳过锁等待。
第15章介绍MySQL服务器性能优化,包括优化MySQL服务器简介、影响MySQL性能的重要参数、MySQL日志设置优化、MySQL I/O设置优化、MySQL并发设置优化、服务器语句超时处理、线程和临时表的优化、增加资源组。
第16章介绍MySQL性能监控,包括基本监控系统方法、开源监控利器Nagios实战、MySQL监控利器Cacti实战。
第17章介绍MySQL数据库的备份和恢复,主要包括数据备份、数据恢复、数据库的迁移和数据表的导出和导入。
第18章介绍MySQL日志,主要包括日志简介、二进制日志、错误日志、通用查询日志和慢查询日志。
第19章介绍MySQL权限与安全管理,主要包括MySQL中的各种权限表、账户管理、权限管理、MySQL的访问控制机制、提升安全性和管理角色。
第20章介绍企业中MySQL的高可用架构,主要包括MySQL高可用的简单介绍、MySQL主从复制、MySQL+DRBD+HA、LVS+Keepalived+MySQL单点写入主主同步方案、MMM高可用架构。
第21章介绍MySQL复制数据的操作方法和技巧。
第22章介绍MySQL Utilities管理MySQL数据库的方法和技巧。
第23章介绍MySQL Proxy实现数据库的读写分离的方法和技巧。
第24章介绍新闻发布系统的数据库设计过程。
第25章介绍论坛管理系统的数据库设计过程。
本书特色
内容全面:涵盖了所有MySQL的基础知识点,可让读者由浅入深地掌握MySQL数据库开发技术。
图文并茂:在介绍案例的过程中,每一个操作均有对应步骤和过程说明。这种图文结合的方式使读者在学习过程中能够直观、清晰地看到操作的过程以及效果,便于读者更快地理解和掌握。
易学易用:颠覆传统“看”书的观念,变成一本能“操作”的图书。
案例丰富:把知识点融汇于系统的案例实训当中,并且结合综合案例进行讲解和拓展。进而达到“知其然,并知其所以然”的效果。
疑难提示:本书对读者在学习过程中可能会遇到的疑难问题以“提示”“注意”等形式进行了说明,以免读者在学习的过程中走弯路。
答疑支持:本书提供答疑QQ群,可直接索要源代码、教学幻灯片和精品教学视频等资源。
课件、源码、教学视频等配套资源下载
本书配套的课件、源码、教学视频、命令速查手册、QQ群与微信群答疑信息,需要使用微信扫描下面二维码获取,可按扫描后的页面提示,把下载链接转发到自己的邮箱中下载。如果发现问题或疑问,请电子邮件联系booksaga@163.com,邮件主题为“MySQL 8.x从入门到精通”。
读者对象
本书适合以下读者学习使用:
? MySQL数据库初学者。
? 对数据库开发有兴趣,希望快速、全面掌握MySQL的人员。
? 对其他数据库有一定的了解,想转到MySQL平台上的开发者。
? 高等院校和培训机构相关专业的师生。
鸣谢与技术支持
本书由李小威主编,还有王英英、张工厂、刘增杰、刘玉萍、胡同夫、刘玉红等人参加了编写工作。虽然本书倾注了众多编者的努力,但由于我们水平有限、时间仓促,书中难免存在不足之处,请读者谅解。如果遇到问题或有意见和建议,敬请与我们联系,我们将全力解决。
编 者
2022年6月
📑 章节目录
- MySQL的安装与配置
- 数据库和数据表的基本操作
- 数据类型和运算符
- MySQL函数
- 数据的增删改查
- 索引的设计和使用
- 存储过程和函数
- 视图
- 触发器
- 存储引擎的选择
- 分区和事务控制
- 性能优化
- 锁定机制
- 服务器性能优化
- 性能监控
- 数据备份与还原
- 日志
- 权限与安全管理
- 高可用架构
- 复制
- MySQL Utilities
- MySQL Proxy
- 综合案例:系统数据库设计