《MySQL 9从入门到性能优化:视频教学版》
本书内容
MySQL是流行的关系数据库管理系统之一,由于其体积小、速度快、总体拥有成本低、开放源码等特点,一般中小型企业甚至大型互联网企业的应用开发都选择MySQL作为数据库。《MySQL 9从入门到性能优化:视频教学版》注重实战操作,详解MySQL 9数据库的操作、运维、优化和设计方法,配套示例源码、PPT课件、同步教学视频、作者微信群答疑服务,帮助读者快速掌握MySQL数据库。
《MySQL 9从入门到性能优化:视频教学版》共分20章,主要内容包括MySQL的安装与配置,数据库和数据表基本操作,数据类型和运算符,MySQL函数,查询数据,插入、更新与删除数据,索引的设计和使用,存储过程和函数,视图,MySQL触发器,数据备份与恢复,MySQL日志,MySQL权限与安全管理,SQL性能优化,MySQL服务器性能优化,MySQL性能监控,提升MySQL数据库的性能,MySQL终极优化实战,企业人事管理系统数据库设计,在线购物系统数据库设计。
本书作者
王英英,从事Web应用开发多年,精通多种编程语言,对数据库技术有深入研究。在Web前端、编程语言、数据库开发方面有着丰富的经验,并创作过多本相关畅销书,被广大读者熟悉和认可。其创作的部分书包括:《SQL Server 2022从入门到精通(视频教学超值版)》
《Python编程从零开始学(视频教学版)》《HTML5+CSS3+JavaScript前端开发从零开始学(视频教学版)》《MySQL 8从入门到精通(视频教学版)》《HTML5+CSS3+JavaScript+jQuery Mobile移动网站与App开发(视频教学版)》《Oracle 19c从入门到精通(视频教学超值版)》
《SQL Server 2019从入门到精通(视频教学超值版)》《MySQL 5.7从零开始学(视频教学版)》。
本书读者
《MySQL 9从入门到性能优化:视频教学版》适合MySQL初学者、MySQL应用开发人员、MySQL数据库管理员和系统运维人员阅读,同时也可以作为高等院校或高职高专院校MySQL数据库课程的教学用书。
本书目录
第1章 MySQL的安装与配置 1
1.1 什么是MySQL 1
1.1.1 客户端/服务器软件 1
1.1.2 MySQL版本 2
1.2 Windows平台下安装与配置MySQL 2
1.2.1 安装MySQL 2
1.2.2 配置MySQL 6
1.3 启动服务并登录MySQL数据库 11
1.3.1 启动MySQL服务 11
1.3.2 登录MySQL数据库 12
1.3.3 配置Path变量 13
1.4 MySQL常用的图形化管理工具 15
1.5 Linux平台下安装与配置MySQL 16
1.5.1 Linux操作系统下的MySQL版本介绍 16
1.5.2 安装和配置MySQL的RPM包 17
第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 使用非空约束 25
2.3.5 使用唯一性约束 25
2.3.6 使用默认约束 26
2.3.7 设置表的属性值自动增加 26
2.4 查看数据表结构 27
2.4.1 查看表基本结构的语句DESCRIBE 27
2.4.2 查看表详细结构的语句SHOW CREATE TABLE 28
2.5 修改数据表 29
2.5.1 修改表名 29
2.5.2 修改字段的数据类型 30
2.5.3 修改字段名 31
2.5.4 添加字段 32
2.5.5 删除字段 34
2.5.6 修改字段的排列位置 35
2.5.7 删除表的外键约束 36
2.6 删除数据表 37
2.6.1 删除没有被关联的表 37
2.6.2 删除被其他表关联的主表 38
第3章 数据类型和运算符 40
3.1 MySQL的数据类型 40
3.1.1 整数类型 40
3.1.2 小数类型 41
3.1.3 日期与时间类型 43
3.1.4 文本字符串类型 53
3.1.5 二进制字符串类型 58
3.2 如何选择数据类型 60
3.3 运算符 62
3.3.1 运算符概述 62
3.3.2 算术运算符 63
3.3.3 比较运算符 64
3.3.4 逻辑运算符 71
3.3.5 位运算符 73
3.3.6 运算符的优先级 76
第4章 MySQL函数 77
4.1 MySQL函数简介 77
4.2 数学函数 77
4.2.1 绝对值函数ABS(x)和返回圆周率的函数PI() 77
4.2.2 平方根函数SQRT(x)和求余函数MOD(x,y) 78
4.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x) 79
4.2.4 获取随机数的函数RAND()和RAND(x) 79
4.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 80
4.2.6 符号函数SIGN(x) 81
4.2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x) 81
4.2.8 对数运算函数LOG(x)和LOG10(x) 82
4.2.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 82
4.2.10 正弦函数SIN(x)和反正弦函数ASIN(x) 83
4.2.11 余弦函数COS(x)和反余弦函数ACOS(x) 83
4.2.12 正切函数、反正切函数和余切函数 84
4.3 字符串函数 85
4.3.1 计算字符串的字符数的函数和计算字符串长度的函数 85
4.3.2 合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...) 85
4.3.3 替换字符串的函数INSERT(s1,x,len,s2) 86
4.3.4 字母大小写转换函数 87
4.3.5 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n) 87
4.3.6 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2) 88
4.3.7 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s) 88
4.3.8 删除指定字符串的函数TRIM(s1 FROM s) 89
4.3.9 重复生成字符串的函数REPEAT(s,n) 90
4.3.10 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2) 90
4.3.11 比较字符串大小的函数STRCMP(s1,s2) 91
4.3.12 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len) 91
4.3.13 匹配子字符串开始位置的函数 92
4.3.14 字符串逆序的函数REVERSE(s) 92
4.3.15 返回指定位置的字符串的函数 92
4.3.16 返回指定字符串位置的函数FIELD(s,s1,s2,...,sn) 93
4.3.17 返回子字符串位置的函数FIND_IN_SET(s1,s2) 93
4.3.18 选取字符串的函数MAKE_SET(x,s1,s2,...,sn) 94
4.4 日期和时间函数 94
4.4.1 获取当前日期的函数和获取当前时间的函数 94
4.4.2 获取当前日期和时间的函数 95
4.4.3 UNIX时间戳函数 95
4.4.4 返回UTC日期的函数和返回UTC时间的函数 96
4.4.5 获取月份的函数MONTH(date)和MONTHNAME(date) 97
4.4.6 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 97
4.4.7 获取星期数的函数WEEK(d)和WEEKOFYEAR(d) 98
4.4.8 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 99
4.4.9 获取年份、季度、小时、分钟和秒钟的函数 99
4.4.10 获取日期的指定值的函数EXTRACT(type FROM date) 100
4.4.11 时间和秒数转换的函数 101
4.4.12 计算日期和时间的函数 101
4.4.13 将日期和时间格式化的函数 104
4.5 条件判断函数 107
4.5.1 IF()函数 107
4.5.2 IFNULL()函数 107
4.5.3 CASE()函数 108
4.6 系统信息函数 109
4.6.1 获取MySQL版本号、连接数和数据库名的函数 109
4.6.2 获取用户名的函数 110
4.6.3 获取字符串的字符集和排序方式的函数 111
4.6.4 获取最后一个自动生成的ID值的函数 111
4.7 加密函数 113
4.7.1 加密函数MD5(str) 113
4.7.2 加密函数SHA(str) 113
4.7.3 加密函数SHA2
(str, hash_length) 114
4.8 其他函数 114
4.8.1 格式化函数FORMAT(x,n) 114
4.8.2 不同进制的数字进行转换的函数 115
4.8.3 IP地址与数字相互转换的函数 115
4.8.4 加锁函数和解锁函数 116
4.8.5 重复执行指定操作的函数 116
4.8.6 改变字符集的函数 117
4.8.7 改变数据类型的函数 118
4.9 窗口函数 118
第5章 查询数据 120
5.1 基本查询语句 120
5.2 单表查询 122
5.2.1 查询所有字段 122
5.2.2 查询指定字段 123
5.2.3 查询指定记录 125
5.2.4 带IN关键字的查询 126
5.2.5 带BETWEEN AND的范围查询 127
5.2.6 带LIKE的字符匹配查询 128
5.2.7 查询空值 130
5.2.8 带AND的多条件查询 131
5.2.9 带OR的多条件查询 132
5.2.10 查询结果不重复 133
5.2.11 对查询结果排序 134
5.2.12 分组查询 138
5.2.13 使用LIMIT限制查询结果的数量 142
5.3 使用聚合函数查询 143
5.3.1 COUNT()函数 144
5.3.2 SUM()函数 145
5.3.3 AVG()函数 145
5.3.4 MAX()函数 146
5.3.5 MIN()函数 147
5.4 连接查询 148
5.4.1 内连接查询 148
5.4.2 外连接查询 151
5.4.3 复合条件连接查询 153
5.5 子查询 154
5.5.1 带ANY、SOME关键字的子查询 154
5.5.2 带ALL关键字的子查询 155
5.5.3 带EXISTS关键字的子查询 155
5.5.4 带IN关键字的子查询 156
5.5.5 带比较运算符的子查询 158
5.6 合并查询结果 159
5.7 为表和字段取别名 162
5.7.1 为表取别名 162
5.7.2 为字段取别名 163
5.8 使用正则表达式查询 164
5.8.1 查询以特定字符或字符串开头的记录 165
5.8.2 查询以特定字符或字符串结尾的记录 166
5.8.3 用符号“.”来替代字符串中的任意一个字符 166
5.8.4 使用“*”和“+”来匹配多个字符 167
5.8.5 匹配指定字符串 167
5.8.6 匹配指定字符中的任意一个 168
5.8.7 匹配指定字符以外的字符 169
5.8.8 使用{n,}或者{n,m}来指定
字符串连续出现的次数 170
5.9 通用表表达式 171
第6章 插入、更新与删除数据 175
6.1 插入数据 175
6.1.1 为表的所有字段插入数据 175
6.1.2 为表的指定字段插入数据 177
6.1.3 同时插入多条数据 178
6.1.4 将查询结果插入表中 180
6.2 更新数据 181
6.3 删除数据 183
6.4 为表增加计算列 185
6.5 DDL的原子化 186
第7章 索引的设计和使用 188
7.1 索引简介 188
7.1.1 索引的含义和特点 188
7.1.2 索引的分类 189
7.1.3 索引的设计原则 190
7.2 创建索引 190
7.2.1 创建表的时候创建索引 190
7.2.2 在已经存在的表上创建索引 196
7.3 删除索引 202
7.4 使用降序索引 204
第8章 存储过程和存储函数 207
8.1 创建存储过程和存储函数 207
8.1.1 创建存储过程 207
8.1.2 创建存储函数 209
8.1.3 变量的使用 210
8.1.4 定义条件和处理程序 212
8.1.5 光标的使用 214
8.1.6 流程控制的使用 216
8.2 调用存储过程和存储函数 220
8.2.1 调用存储过程 220
8.2.2 调用存储函数 221
8.3 查看存储过程和存储函数 221
8.3.1 使用SHOW STATUS语句查看存储过程和存储函数的状态 222
8.3.2 使用SHOW CREATE语句查看存储过程和存储函数的定义 222
8.3.3 从information_schema.Routines
表中查看存储过程和存储函数的信息 223
8.4 修改存储过程和存储函数 224
8.5 删除存储过程和存储函数 226
8.6 全局变量的持久化 226
第9章 视图 228
9.1 视图概述 228
9.1.1 视图的含义 228
9.1.2 视图的作用 229
9.2 创建视图 229
9.2.1 创建视图的语法形式 230
9.2.2 在单表上创建视图 230
9.2.3 在多表上创建视图 231
9.3 查看视图 232
9.3.1 使用DESCRIBE语句查看视图基本信息 232
9.3.2 使用SHOW TABLE STATUS语句查看视图基本信息 232
9.3.3 使用SHOW CREATE VIEW语句查看视图详细信息 234
9.3.4 在views表中查看视图详细信息 234
9.4 修改视图 235
9.4.1 使用CREATE OR REPLACE
VIEW语句修改视图 235
9.4.2 使用ALTER语句修改视图 236
9.5 更新视图 237
9.6 删除视图 239
第10章 MySQL触发器 241
10.1 创建触发器 241
10.1.1 创建只有一个执行语句的触发器 241
10.1.2 创建有多个执行语句的触发器 242
10.2 查看触发器 244
10.2.1 利用SHOW TRIGGERS语句查看触发器信息 244
10.2.2 在triggers表中查看触发器信息 246
10.3 触发器的使用 247
10.4 删除触发器 248
第11章 数据备份与恢复 249
11.1 数据备份 249
11.1.1 使用mysqldump命令备份数据 249
11.1.2 直接复制整个数据库目录 254
11.1.3 使用MySQLhotcopy工具快速备份 255
11.2 数据恢复 255
11.2.1 使用mysql命令恢复数据 256
11.2.2 直接复制到数据库目录 256
11.2.3 mysqlhotcopy快速恢复 257
11.3 数据库迁移 257
11.3.1 相同版本的MySQL数据库之间的迁移 257
11.3.2 不同版本的MySQL数据库之间的迁移 258
11.3.3 不同数据库之间的迁移 258
11.4 数据的导出和导入 259
11.4.1 使用SELECT...INTO OUTFILE导出文本文件 259
11.4.2 使用mysqldump命令导出文本文件 262
11.4.3 使用mysql命令导出文本文件 265
11.4.4 使用LOAD DATA INFILE方式导入文本文件 267
11.4.5 使用mysqlimport命令导入文本文件 269
第12章 MySQL日志 272
12.1 日志简介 272
12.2 二进制日志 273
12.2.1 启动和设置二进制日志 273
12.2.2 查看二进制日志 274
12.2.3 删除二进制日志 276
12.2.4 使用二进制日志恢复数据库 277
12.2.5 暂时停止二进制日志功能 278
12.3 错误日志 278
12.3.1 启动和设置错误日志 278
12.3.2 查看错误日志 279
12.3.3 删除错误日志 280
12.4 通用查询日志 280
12.4.1 启动通用查询日志 280
12.4.2 查看通用查询日志 281
12.4.3 删除通用查询日志 281
12.5 慢查询日志 282
12.5.1 启动和设置慢查询日志 282
12.5.2 查看慢查询日志 282
12.5.3 删除慢查询日志 283
第13章 MySQL权限与安全管理 284
13.1 权限表 284
13.1.1 user表 284
13.1.2 db表 287
13.1.3 tables_priv表和
columns_priv表 288
13.1.4 procs_priv表 289
13.2 账户管理 290
13.2.1 登录和退出MySQL服务器 290
13.2.2 新建普通用户 291
13.2.3 删除普通用户 293
13.2.4 root用户修改普通用户密码 294
13.3 权限管理 295
13.3.1 MySQL的各种权限 296
13.3.2 授权 298
13.3.3 收回权限 299
13.3.4 查看权限 300
13.4 访问控制 301
13.4.1 连接核实阶段 301
13.4.2 请求核实阶段 301
13.5 提升安全性 302
13.5.1 密码到期更换策略 302
13.5.2 安全模式 304
13.6 管理角色 305
第14章 MySQL性能优化 307
14.1 优化简介 307
14.2 优化查询 308
14.2.1 分析查询语句 308
14.2.2 索引对查询速度的影响 311
14.2.3 使用索引查询 312
14.2.4 优化子查询 315
14.3 优化数据库结构 315
14.3.1 将字段很多的表分解成多张表 315
14.3.2 增加中间表 317
14.3.3 增加冗余字段 318
14.3.4 优化插入记录的速度 318
14.3.5 分析表、检查表和优化表 320
14.4 优化临时表性能 322
14.5 创建全局通用表空间 324
第15章 MySQL服务器性能优化 325
15.1 优化MySQL服务器 325
15.1.1 优化服务器硬件 325
15.1.2 优化MySQL的参数 326
15.2 影响MySQL服务器性能的重要参数 327
15.2.1 查看性能参数的方法 327
15.2.2 key_buffer_size的设置 331
15.2.3 内存参数的设置 334
15.2.4 日志和事务参数的设置 335
15.2.5 存储和I/O相关参数的设置 337
15.2.6 其他重要参数的设置 338
15.3 MySQL日志设置优化 339
15.4 MySQL I/O设置优化 341
15.5 MySQL并发设置优化 343
15.6 服务器语句超时处理 344
15.7 线程和临时表的优化 344
15.7.1 线程的优化 344
15.7.2 临时表的优化 345
15.8 增加资源组 346
第16章 MySQL性能监控 348
16.1 监控系统的基本方法 348
16.1.1 ps命令 348
16.1.2 top命令 349
16.1.3 vmstat命令 351
16.1.4 mytop命令 352
16.1.5 sysstat工具 354
16.2 开源监控利器Nagios实战 359
16.2.1 安装Nagios之前的准备工作 359
16.2.2 安装Nagios主程序 361
16.2.3 整合Nagios到Apache服务 362
16.2.4 安装Nagios插件包 365
16.2.5 监控服务器的CPU、负载、磁盘I/O使用情况 367
16.2.6 配置Nagios监控MySQL服务器 371
16.3 MySQL监控利器Cacti实战 373
16.3.1 Cacti工具的安装 373
16.3.2 Cacti监控MySQL服务器 378
第17章 提升MySQL数据库的性能 384
17.1 默认字符集改为utf8mb4 384
17.2 自增变量的持久化 385
17.3 GROUP BY不再隐式排序 387
17.4 统计直方图 389
17.4.1 直方图的优点 389
17.4.2 直方图的基本操作 390
17.5 日志分类更详细 391
17.6 支持不可见索引 392
17.7 支持JSON类型 393
17.8 全文索引的加强 396
17.9 动态修改InnoDB缓冲池的大小 397
17.10 表空间数据加密 399
17.11 跳过锁等待 400
17.12 MySQL 9.0新特性1——支持
将JSON输出保存到用户变量 400
17.13 MySQL 9.0新特性2——支持准备语句 401
17.14 MySQL 9.0新特性3——支持
面向AI的向量存储 402
第18章 MySQL终极优化实战 404
18.1 选择合适的存储引擎 404
18.2 通过分区表提升MySQL执行效率 408
18.2.1 认识分区表 408
18.2.2 RANGE分区 408
18.2.3 LIST分区 410
18.2.4 HASH分区 411
18.2.5 线性HASH分区 411
18.2.6 KEY分区 413
18.2.7 复合分区 413
18.3 优化数据表的锁 415
18.3.1 MyISAM表级锁优化建议 415
18.3.2 InnoDB行级锁优化建议 416
18.4 优化事务控制 416
第19章 企业人事管理系统数据库设计 421
19.1 需求分析 421
19.2 系统功能结构 421
19.3 数据库设计 422
19.3.1 数据库实体E-R图 422
19.3.2 数据库表的设计 425
19.4 使用MySQL Workbench创建数据表 428
19.4.1 创建数据库连接 428
19.4.2 创建新的数据库 429
19.4.3 创建数据表 430
第20章 在线购物系统数据库设计 433
20.1 系统分析 433
20.1.1 系统总体设计 433
20.1.2 系统界面设计 433
20.2 系统主要功能 434
20.3 数据库与数据表设计 435
20.3.1 数据库实体E-R图 435
20.3.2 数据库和数据表分析 436
20.4 使用MySQL Workbench数据建模 438
20.4.1 建立E-R模型 438
20.4.2 导入E-R模型 442
本书特色
本文摘自《MySQL 9从入门到性能优化:视频教学版》,获出版社和作者授权发布。