《MySQL 8从入门到精通》是由清华大学出版社出版的一本关于MySQL8方面的书籍,作者是王英英,主要介绍了关于MySQL8、入门、精通方面的知识内容,目前在MySQL8类书籍综合评分为:8.8分。
书籍介绍
MySQL被设计方案为1个可移植的数据库查询,基本上能在当今全部的电脑操作系统上运作,如Linux、Solaris、FreeBSD、Mac和Windows。开源系统MySQL数据库查询发展趋势到今日,早已具备了十分普遍的客户基本,销售市场证实MySQL具备高性价比、应用灵便、运用普遍和具备优良适用的特性。
MySQL 8干了很多的改善,性能提升MySQL5.7快2倍!这书把MySQL 8的新
特点分散化到各章,融合案例开展解读并做提醒,便捷用户迅速把握MySQL数据管理技术性及其MySQL 8的新特点。这书主题思想包含MySQL的安裝与配备、数据库查询的建立、数据库的建立、数据类型和运算符、MySQL涵数、查寻数据、数据库的实际操作(插进、升级与删掉数据)、数据库索引、存储过程和函数、景图、触发器、用户管理系统、数据备份与还原、MySQL系统日志、特性提升、MySQL Replication、MySQL Workbench、MySQL Utilities、MySQL Proxy、PHP实际操作MySQL数据库查询和PDO数据库查询抽象类库等。*后根据3个综合性实例的数据库设计,深化叙述MySQL在具体工作上的运用。 这书现有480个案例和16个综合性实例,也有很多的經典练习题。随书赠送了近20钟头培训机构方式的教学视频录影,详尽解读了书中每1个知识结构图和每1个数据库查询实际操作的方式 和方法,另外还出示了这书全部事例的源码,用户能够立即查询和启用。 这书重视实战演练实际操作,协助用户由浅入深地把握MySQL中的各类技术性,特别适合MySQL数据库查询新手、MySQL数据库查询开发者和MySQL数据库管理员阅读文章,另外也可以做为高等学校和培训机构有关技术专业老师学生的课堂教学用书。
目录
- 第1章 初识MySQL 1
- 1.1 数据库基础 1
- 1.1.1 什么是数据库 2
- 1.1.2 表 2
- 1.1.3 数据类型 2
- 1.1.4 主键 3
- 1.2 数据库技术构成 3
- 1.2.1 数据库系统 3
- 1.2.2 SQL语言 4
- 1.2.3 数据库访问接口 5
- 1.3 什么是MySQL 5
- 1.3.1 客户端/服务器软件 5
- 1.3.2 MySQL版本 6
- 1.3.3 MySQL的优势 7
- 1.4 MySQL工具 7
- 1.4.1 MySQL命令行实用程序 7
- 1.4.2 MySQL Workbench 8
- 1.5 MySQL 8.0的新特性简述 9
- 1.6 如何学习MySQL 11
- 第2章 MySQL的安装与配置 13
- 2.1 Windows平台下安装与配置MySQL 8.0 13
- 2.1.1 安装MySQL 8.0 14
- 2.1.2 配置MySQL 8.0 17
- 2.2 启动服务并登录MySQL数据库 22
- 2.2.1 启动MySQL服务 22
- 2.2.2 登录MySQL数据库 24
- 2.2.3 配置Path变量 25
- 2.3 MySQL常用图形管理工具 27
- 2.4 Linux平台下安装与配置MySQL 8.0 28
- 2.4.1 Linux操作系统下的MySQL版本介绍 28
- 2.4.2 安装和配置MySQL的RPM包 29
- 2.4.3 安装和配置MySQL的源码包 32
- 2.5 专家解惑 32
- 2.6 经典习题 33
- 第3章 数据库的基本操作 34
- 3.1 创建数据库 34
- 3.2 删除数据库 36
- 3.3 MySQL 8.0的新特性——系统表全部为InnoDB表 36
- 3.4 综合案例——数据库的创建和删除 37
- 3.5 专家解惑 39
- 3.6 经典习题 39
- 第4章 数据表的基本操作 40
- 4.1 创建数据表 40
- 4.1.1 创建表的语法形式 41
- 4.1.2 使用主键约束 42
- 4.1.3 使用外键约束 43
- 4.1.4 使用非空约束 44
- 4.1.5 使用唯一性约束 45
- 4.1.6 使用默认约束 46
- 4.1.7 设置表的属性值自动增加 46
- 4.2 查看数据表结构 47
- 4.2.1 查看表基本结构语句DESCRIBE 47
- 4.2.2 查看表详细结构语句SHOW CREATE TABLE 48
- 4.3 修改数据表 49
- 4.3.1 修改表名 49
- 4.3.2 修改字段的数据类型 50
- 4.3.3 修改字段名 51
- 4.3.4 添加字段 52
- 4.3.5 删除字段 54
- 4.3.6 修改字段的排列位置 55
- 4.3.7 更改表的存储引擎 56
- 4.3.8 删除表的外键约束 57
- 4.4 删除数据表 58
- 4.4.1 删除没有被关联的表 59
- 4.4.2 删除被其他表关联的主表 59
- 4.5 MySQL 8.0的新特性1——默认字符集改为utf8mb4 61
- 4.6 MySQL 8.0的新特性2——自增变量的持久化 62
- 4.7 综合案例——数据表的基本操作 64
- 4.8 专家解惑 72
- 4.9 经典习题 72
- 第5章 数据类型和运算符 74
- 5.1 MySQL数据类型介绍 74
- 5.1.1 整数类型 75
- 5.1.2 浮点数类型和定点数类型 76
- 5.1.3 日期与时间类型 78
- 5.1.4 文本字符串类型 89
- 5.1.5 二进制字符串类型 94
- 5.2 如何选择数据类型 96
- 5.3 常见运算符介绍 98
- 5.3.1 运算符概述 98
- 5.3.2 算术运算符 98
- 5.3.3 比较运算符 100
- 5.3.4 逻辑运算符 107
- 5.3.5 位运算符 110
- 5.3.6 运算符的优先级 112
- 5.4 综合案例——运算符的使用 113
- 5.5 专家解惑 115
- 5.6 经典习题 116
- 第6章 MySQL函数 117
- 6.1 MySQL函数简介 117
- 6.2 数学函数 118
- 6.2.1 绝对值函数ABS(x)和返回圆周率的函数PI() 118
- 6.2.2 平方根函数SQRT(x)和求余函数MOD(x,y) 118
- 6.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x) 119
- 6.2.4 获取随机数的函数RAND()和RAND(x) 120
- 6.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 120
- 6.2.6 符号函数SIGN(x) 121
- 6.2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x) 122
- 6.2.8 对数运算函数LOG(x)和LOG10(x) 122
- 6.2.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 123
- 6.2.10 正弦函数SIN(x)和反正弦函数ASIN(x) 123
- 6.2.11 余弦函数COS(x)和反余弦函数ACOS(x) 124
- 6.2.12 正切函数、反正切函数和余切函数 124
- 6.3 字符串函数 125
- 6.3.1 计算字符串字符数的函数和字符串长度的函数 125
- 6.3.2 合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 126
- 6.3.3 替换字符串的函数INSERT(s1,x,len,s2) 126
- 6.3.4 字母大小写转换函数 127
- 6.3.5 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n) 128
- 6.3.6 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2) 128
- 6.3.7 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s) 129
- 6.3.8 删除指定字符串的函数TRIM(s1 FROM s) 130
- 6.3.9 重复生成字符串的函数REPEAT(s,n) 130
- 6.3.10 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2) 130
- 6.3.11 比较字符串大小的函数STRCMP(s1,s2) 131
- 6.3.12 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len) 131
- 6.3.13 匹配子串开始位置的函数 132
- 6.3.14 字符串逆序的函数REVERSE(s) 133
- 6.3.15 返回指定位置的字符串的函数 133
- 6.3.16 返回指定字符串位置的函数FIELD(s,s1,s2,…,sn) 133
- 6.3.17 返回子串位置的函数FIND_IN_SET(s1,s2) 134
- 6.3.18 选取字符串的函数MAKE_SET(x,s1,s2,…,sn) 134
- 6.4 日期和时间函数 135
- 6.4.1 获取当前日期的函数和获取当前时间的函数 135
- 6.4.2 获取当前日期和时间的函数 135
- 6.4.3 UNIX时间戳函数 136
- 6.4.4 返回UTC日期的函数和返回UTC时间的函数 137
- 6.4.5 获取月份的函数MONTH(date)和MONTHNAME(date) 137
- 6.4.6 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 138
- 6.4.7 获取星期数的函数WEEK(d)和WEEKOFYEAR(d) 138
- 6.4.8 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 139
- 6.4.9 获取年份、季度、小时、分钟和秒钟的函数 140
- 6.4.10 获取日期的指定值的函数EXTRACT(type FROM date) 141
- 6.4.11 时间和秒钟转换的函数 141
- 6.4.12 计算日期和时间的函数 142
- 6.4.13 将日期和时间格式化的函数 145
- 6.5 条件判断函数 147
- 6.5.1 IF(expr,v1,v2)函数 147
- 6.5.2 IFNULL(v1,v2)函数 148
- 6.5.3 CASE函数 148
- 6.6 系统信息函数 149
- 6.6.1 获取MySQL版本号、连接数和数据库名的函数 149
- 6.6.2 获取用户名的函数 151
- 6.6.3 获取字符串的字符集和排序方式的函数 151
- 6.6.4 获取最后一个自动生成的ID值的函数 152
- 6.7 MySQL 8.0的新特性1——加密函数 154
- 6.7.1 加密函数MD5(str) 154
- 6.7.2 加密函数SHA(str) 154
- 6.7.3 加密函数SHA2(str, hash_length) 154
- 6.8 其他函数 155
- 6.8.1 格式化函数FORMAT(x,n) 155
- 6.8.2 不同进制的数字进行转换的函数 155
- 6.8.3 IP地址与数字相互转换的函数 156
- 6.8.4 加锁函数和解锁函数 156
- 6.8.5 重复执行指定操作的函数 157
- 6.8.6 改变字符集的函数 158
- 6.8.7 改变数据类型的函数 158
- 6.9 MySQL 8.0的新特性2——窗口函数 159
- 6.10 综合案例——MySQL函数的使用 160
- 6.11 专家解惑 163
- 6.12 经典习题 164
- 第7章 查询数据 165
- 7.1 基本查询语句 165
- 7.2 单表查询 168
- 7.2.1 查询所有字段 168
- 7.2.2 查询指定字段 169
- 7.2.3 查询指定记录 171
- 7.2.4 带IN关键字的查询 172
- 7.2.5 带BETWEEN AND的范围查询 174
- 7.2.6 带LIKE的字符匹配查询 175
- 7.2.7 查询空值 176
- 7.2.8 带AND的多条件查询 178
- 7.2.9 带OR的多条件查询 179
- 7.2.10 查询结果不重复 180
- 7.2.11 对查询结果排序 181
- 7.2.12 分组查询 184
- 7.2.13 使用LIMIT限制查询结果的数量 189
- 7.3 使用集合函数查询 190
- 7.3.1 COUNT()函数 191
- 7.3.2 SUM()函数 192
- 7.3.3 AVG()函数 193
- 7.3.4 MAX()函数 194
- 7.3.5 MIN()函数 195
- 7.4 连接查询 196
- 7.4.1 内连接查询 196
- 7.4.2 外连接查询 199
- 7.4.3 复合条件连接查询 201
- 7.5 子查询 202
- 7.5.1 带ANY、SOME关键字的子查询 202
- 7.5.2 带ALL关键字的子查询 203
- 7.5.3 带EXISTS关键字的子查询 203
- 7.5.4 带IN关键字的子查询 204
- 7.5.5 带比较运算符的子查询 206
- 7.6 合并查询结果 208
- 7.7 为表和字段取别名 210
- 7.7.1 为表取别名 210
- 7.7.2 为字段取别名 212
- 7.8 使用正则表达式查询 213
- 7.8.1 查询以特定字符或字符串开头的记录 214
- 7.8.2 查询以特定字符或字符串结尾的记录 215
- 7.8.3 用符号"."来替代字符串中的任意一个字符 215
- 7.8.4 使用"*"和" "来匹配多个字符 216
- 7.8.5 匹配指定字符串 216
- 7.8.6 匹配指定字符中的任意一个 217
- 7.8.7 匹配指定字符以外的字符 218
- 7.8.8 使用{n,}或者{n,m}来指定字符串连续出现的次数 219
- 7.9 MySQL 8.0的新特性1—— GROUP BY不再隐式排序 220
- 7.10 MySQL 8.0的新特性2——通用表表达式 222
- 7.11 综合案例——数据表查询操作 225
- 7.12 专家解惑 232
- 7.13 经典习题 233
- 第8章 插入、更新与删除数据 234
- 8.1 插入数据 234
- 8.1.1 为表的所有字段插入数据 235
- 8.1.2 为表的指定字段插入数据 236
- 8.1.3 同时插入多条记录 238
- 8.1.4 将查询结果插入到表中 239
- 8.2 更新数据 241
- 8.3 删除数据 243
- 8.4 为表增加计算列 245
- 8.5 MySQL 8.0的新特性——DDL的原子化 246
- 8.6 综合案例——记录的插入、更新和删除 247
- 8.7 专家解惑 251
- 8.8 经典习题 252
- 第9章 索 引 253
- 9.1 索引简介 253
- 9.1.1 索引的含义和特点 254
- 9.1.2 索引的分类 254
- 9.1.3 索引的设计原则 255
- 9.2 创建索引 255
- 9.2.1 创建表的时候创建索引 256
- 9.2.2 在已经存在的表上创建索引 261
- 9.3 删除索引 267
- 9.4 MySQL 8.0的新特性1——支持降序索引 269
- 9.5 MySQL 8.0的新特性2——统计直方图 272
- 9.5.1 直方图的优点 272
- 9.5.2 直方图的基本操作 273
- 9.6 综合案例——创建索引 274
- 9.7 专家解惑 277
- 9.8 经典习题 277
- 第10章 存储过程和函数 278
- 10.1 创建存储过程和函数 279
- 10.1.1 创建存储过程 279
- 10.1.2 创建存储函数 281
- 10.1.3 变量的使用 282
- 10.1.4 定义条件和处理程序 283
- 10.1.5 光标的使用 286
- 10.1.6 流程控制的使用 287
- 10.2 调用存储过程和函数 291
- 10.2.1 调用存储过程 291
- 10.2.2 调用存储函数 292
- 10.3 查看存储过程和函数 293
- 10.3.1 使用SHOW STATUS语句查看存储过程和函数的状态 293
- 10.3.2 使用SHOW CREATE语句查看存储过程和函数的定义 294
- 10.3.3 从information_schema.Routines表中查看存储过程和 函数的信息 295
- 10.4 修改存储过程和函数 296
- 10.5 删除存储过程和函数 298
- 10.6 MySQL 8.0的新特性——全局变量的持久化 298
- 10.7 综合案例——创建存储过程和函数 299
- 10.8 专家解惑 302
- 10.9 经典习题 303
- 第11章 视 图 304
- 11.1 视图概述 304
- 11.1.1 视图的含义 305
- 11.1.2 视图的作用 305
- 11.2 创建视图 306
- 11.2.1 创建视图的语法形式 306
- 11.2.2 在单表上创建视图 307
- 11.2.3 在多表上创建视图 307
- 11.3 查看视图 308
- 11.3.1 使用DESCRIBE语句查看视图基本信息 308
- 11.3.2 使用SHOW TABLE STATUS语句查看视图基本信息 309
- 11.3.3 使用SHOW CREATE VIEW语句查看视图详细信息 310
- 11.3.4 在views表中查看视图详细信息 311
- 11.4 修改视图 312
- 11.4.1 使用CREATE OR REPLACE VIEW语句修改视图 312
- 11.4.2 使用ALTER语句修改视图 313
- 11.5 更新视图 314
- 11.6 删除视图 316
- 11.7 综合案例——视图应用 317
- 11.8 专家解惑 325
- 11.9 经典习题 326
- 第12章 MySQL触发器 327
- 12.1 创建触发器 327
- 12.1.1 创建只有一个执行语句的触发器 328
- 12.1.2 创建有多个执行语句的触发器 329
- 12.2 查看触发器 331
- 12.2.1 利用SHOW TRIGGERS语句查看触发器信息 331
- 12.2.2 在triggers表中查看触发器信息 333
- 12.3 触发器的使用 334
- 12.4 删除触发器 335
- 12.5 综合案例——触发器的使用 336
- 12.6 专家解惑 338
- 12.7 经典习题 338
- 第13章 MySQL权限与安全管理 339
- 13.1 权 限 表 339
- 13.1.1 user表 340
- 13.1.2 db表 342
- 13.1.3 tables_priv表和columns_priv表 343
- 13.1.4 procs_priv表 344
- 13.2 账户管理 344
- 13.2.1 登录和退出MySQL服务器 345
- 13.2.2 新建普通用户 346
- 13.2.3 删除普通用户 348
- 13.2.4 root用户修改自己的密码 349
- 13.2.5 root用户修改普通用户密码 350
- 13.3 权限管理 351
- 13.3.1 MySQL的各种权限 351
- 13.3.2 授权 353
- 13.3.3 收回权限 355
- 13.3.4 查看权限 356
- 13.4 访问控制 357
- 13.4.1 连接核实阶段 357
- 13.4.2 请求核实阶段 357
- 13.5 提升安全性 358
- 13.5.1 AES 256加密 358
- 13.5.2 密码到期更换策略 360
- 13.5.3 安全模式安装 361
- 13.6 MySQL 8.0的新特性——管理角色 362
- 13.7 综合案例——综合管理用户权限 363
- 13.8 专家解惑 366
- 13.9 经典习题 366
- 第14章 数据备份与恢复 368
- 14.1 数据备份 368
- 14.1.1 使用MySQLdump命令备份 369
- 14.1.2 直接复制整个数据库目录 374
- 14.1.3 使用MySQLhotcopy工具快速备份 375
- 14.2 数据恢复 375
- 14.2.1 使用MySQL命令恢复 375
- 14.2.2 直接复制到数据库目录 376
- 14.2.3 MySQLhotcopy快速恢复 377
- 14.3 数据库迁移 377
- 14.3.1 相同版本的MySQL数据库之间的迁移 377
- 14.3.2 不同版本的MySQL数据库之间的迁移 378
- 14.3.3 不同数据库之间的迁移 378
- 14.4 表的导出和导入 378
- 14.4.1 使用SELECT…INTO OUTFILE导出文本文件 379
- 14.4.2 使用MySQLdump命令导出文本文件 383
- 14.4.3 使用MySQL命令导出文本文件 385
- 14.4.4 使用LOAD DATA INFILE方式导入文本文件 389
- 14.4.5 使用MySQLimport命令导入文本文件 391
- 14.5 综合案例——数据的备份与恢复 392
- 14.6 专家解惑 396
- 14.7 经典习题 397
- 第15章 MySQL日志 398
- 15.1 日志简介 398
- 15.2 二进制日志 399
- 15.2.1 启动和设置二进制日志 399
- 15.2.2 查看二进制日志 401
- 15.2.3 删除二进制日志 402
- 15.2.4 使用二进制日志恢复数据库 404
- 15.2.5 暂时停止二进制日志功能 404
- 15.3 错误日志 405
- 15.3.1 启动和设置错误日志 405
- 15.3.2 查看错误日志 405
- 15.3.3 删除错误日志 406
- 15.4 通用查询日志 407
- 15.4.1 启动通用查询日志 407
- 15.4.2 查看通用查询日志 407
- 15.4.3 删除通用查询日志 408
- 15.5 慢查询日志 408
- 15.5.1 启动和设置慢查询日志 409
- 15.5.2 查看慢查询日志 409
- 15.5.3 删除慢查询日志 410
- 15.6 MySQL 8.0的新特性——日志分类更详细 410
- 15.7 综合案例——MySQL日志的综合管理 410
- 15.8 专家解惑 416
- 15.9 经典习题 416
- 第16章 性能优化 418
- 16.1 优化简介 418
- 16.2 优化查询 419
- 16.2.1 分析查询语句 419
- 16.2.2 索引对查询速度的影响 423
- 16.2.3 使用索引查询 424
- 16.2.4 优化子查询 426
- 16.3 优化数据库结构 427
- 16.3.1 将字段很多的表分解成多个表 427
- 16.3.2 增加中间表 428
- 16.3.3 增加冗余字段 430
- 16.3.4 优化插入记录的速度 430
- 16.3.5 分析表、检查表和优化表 432
- 16.4 优化MySQL服务器 434
- 16.4.1 优化服务器硬件 434
- 16.4.2 优化MySQL的参数 434
- 16.5 临时表性能优化 435
- 16.6 服务器语句超时处理 437
- 16.7 创建全局通用表空间 438
- 16.8 MySQL 8.0的新特性1——支持不可见索引 438
- 16.9 MySQL 8.0的新特性2——增加资源组 440
- 16.10 综合案例——全面优化MySQL服务器 442
- 16.11 专家解惑 444
- 16.12 经典习题 445
- 第17章 MySQL Replication 446
- 17.1 MySQL Replication概述 446
- 17.2 Windows环境下的MySQL主从复制 447
- 17.2.1 复制前的准备工作 447
- 17.2.2 Windows环境下实现主从复制 448
- 17.2.3 Windows环境下主从复制测试 455
- 17.3 Linux环境下的MySQL复制 456
- 17.3.1 下载并安装MySQL 8.0 456
- 17.3.2 单机主从复制前的准备工作 458
- 17.3.3 MySQLd_multi实现单机主从复制 461
- 17.3.4 不同服务器之间实现主从复制 468
- 17.3.5 MySQL 主要复制启动选项 470
- 17.3.6 指定复制的数据库或者表 471
- 17.4 查看Slave的复制进度 478
- 17.5 日常管理和维护 479
- 17.5.1 了解服务器的状态 480
- 17.5.2 服务器复制出错的原因 481
- 17.6 切换主从服务器 483
- 17.7 多源复制的改进 487
- 17.8 专家解惑 489
- 17.9 经典习题 490
- 第18章 MySQL Workbench 的使用 492
- 18.1 MySQL Workbench简介 492
- 18.1.1 MySQL Workbench 的概述 493
- 18.1.2 MySQL Workbench 的优势 493
- 18.1.3 MySQL Workbench 的安装 493
- 18.2 SQL Development的基本操作 495
- 18.2.1 创建数据库连接 495
- 18.2.2 创建新的数据库 496
- 18.2.3 创建和删除新的数据表 498
- 18.2.4 添加、修改表记录 501
- 18.2.5 查询表记录 502
- 18.2.6 修改表结构 503
- 18.3 Data Modeling的基本操作 504
- 18.3.1 建立ER模型 504
- 18.3.2 导入ER模型 509
- 18.4 Server Administration的基本操作 511
- 18.4.1 管理MySQL用户 511
- 18.4.2 备份MySQL数据库 514
- 18.4.3 恢复MySQL数据库 517
- 18.5 专家解惑 518
- 18.6 经典习题 518
- 第19章 MySQL管理利器——MySQL Utilities 519
- 19.1 MySQL Utilities概述 519
- 19.2 安装与配置 520
- 19.2.1 下载与安装MySQL Utilities 520
- 19.2.2 MySQL Utilities连接数据库 522
- 19.3 管理与维护 522
- 19.3.1 使用mysqldbcompare比较数据 523
- 19.3.2 使用mysqldbcopy复制数据 523
- 19.3.3 使用mysqldbexport导出数据 524
- 19.3.4 使用mysqldbimport导入数据 524
- 19.3.5 使用mysqldiff比较对象的定义 525
- 19.4 专家解惑 525
- 19.5 经典习题 526
- 第20章 读写分离的利器——MySQL Proxy 527
- 20.1 概述 527
- 20.2 安装与配置 528
- 20.2.1 下载与安装MySQL Proxy 529
- 20.2.2 配置MySQL Proxy参数 529
- 20.2.3 配置Path变量 532
- 20.3 使用MySQL Proxy实现读写分离 533
- 20.4 专家解惑 534
- 20.5 经典习题 535
- 第21章 精通MySQL存储引擎 536
- 21.1 MySQL架构 536
- 21.1.1 MySQL物理文件的组成 537
- 21.1.2 MySQL各逻辑块简介 539
- 21.1.3 MySQL各逻辑块协调工作 541
- 21.2 数据库存储引擎 543
- 21.2.1 MySQL存储引擎简介 543
- 21.2.2 InnoDB存储引擎 545
- 21.2.3 MyISAM存储引擎 545
- 21.2.4 MEMORY存储引擎 546
- 21.2.5 MERGE存储引擎 546
- 21.2.6 BerkeleyDB存储引擎 548
- 21.3 认识MySQL的锁定机制 549
- 21.4 MyISAM的锁定机制 554
- 21.4.1 MyISAM表级锁的锁模式 554
- 21.4.2 获取MyISAM表级锁的争用情况 556
- 21.4.3 MyISAM表级锁加锁方法 557
- 21.4.4 MyISAM Concurrent Insert的特性 559
- 21.4.5 MyISAM表级锁优化建议 561
- 21.5 InnoDB的锁定机制 562
- 21.5.1 InnoDB行级锁模式 562
- 21.5.2 获取InnoDB行级锁的争用情况 567
- 21.5.3 InnoDB行级锁的实现方法 569
- 21.5.4 间隙锁(Net-Key锁) 575
- 21.5.5 InnoDB 在不同隔离级别下加锁的差异 576
- 21.5.6 InnoDB 存储引擎中的死锁 576
- 21.5.7 InnoDB行级锁优化建议 579
- 21.6 InnoDB存储引擎的在线操作 580
- 21.6.1 在线添加主键 580
- 21.6.2 在线增大VARCHAR列长 581
- 21.6.3 在线重命名索引 582
- 21.7 MySQL 8.0的新特性1——支持JSON类型 582
- 21.8 MySQL 8.0的新特性2——全文索引的加强 584
- 21.9 MySQL 8.0的新特性3—— 动态修改InnoDB缓冲池的大小 586
- 21.10 MySQL 8.0的新特性4——表空间数据加密 587
- 21.11 MySQL 8.0的新特性5——跳过锁等待 588
- 21.12 专家解惑 589
- 21.13 经典习题 590
- 第22章 PHP操作MySQL数据库 591
- 22.1 PHP访问MySQL数据库的一般步骤 591
- 22.2 连接数据库前的准备工作 592
- 22.3 访问数据库 593
- 22.3.1 使用mysqli_connect()函数连接MySQL服务器 593
- 22.3.2 使用mysqli_select_db()函数更改默认的数据库 594
- 22.3.3 使用mysqli_close()函数关闭MySQL连接 595
- 22.3.4 使用mysqli_query()函数执行SQL语句 595
- 22.3.5 获取查询结果集中的记录数 596
- 22.3.6 获取结果集中的一条记录作为枚举数组 597
- 22.3.7 获取结果集中的记录作为关联数组 598
- 22.3.8 获取结果集中的记录作为对象 599
- 22.3.9 使用mysqli_fetch_array()函数获取结果集记录 599
- 22.3.10 使用mysqli_free_result()函数释放资源 600
- 22.4 综合实例1——PHP操作MySQL数据库 600
- 22.5 综合实例2——使用insert语句动态添加用户信息 602
- 22.6 综合实例3——使用select语句查询数据信息 604
- 22.7 专家解惑 605
- 第23章 PDO数据库抽象类库 607
- 23.1 PDO概述 607
- 23.2 PDO的安装 608
- 23.3 使用PDO操作MySQL 608
- 23.3.1 连接MySQL数据库的方法 609
- 23.3.2 使用PDO时的try catch错误处理结构 610
- 23.3.3 使用PDO执行SQL的选择语句 612
- 23.3.4 使用PDO获取返回数据的类方法 613
- 23.3.5 使用PDO执行SQL的添加、修改语句 615
- 23.3.6 使用PDO执行SQL的删除语句 616
- 23.4 综合实例——PDO的prepare表述 616
- 23.5 专家解惑 618
- 第24章 综合项目1——开发网上商城 619
- 24.1 系统功能描述 619
- 24.2 系统功能分析 620
- 24.2.1 系统功能分析 620
- 24.2.2 数据流程和数据库 621
- 24.3 代码的具体实现 623
- 24.4 程序运行 633
- 第25章 综合项目2——论坛管理系统数据库设计 635
- 25.1 系统概述 635
- 25.2 系统功能 636
- 25.3 数据库设计和实现 637
- 25.3.1 设计方案图表 637
- 25.3.2 设计表 639
- 25.3.3 设计索引 642
- 25.3.4 设计视图 643
- 25.3.5 设计触发器 644
- 第26章 综合项目3——新闻发布系统数据库设计 646
- 26.1 系统概述 646
- 26.2 系统功能 647
- 26.3 数据库设计和实现 648
- 26.3.1 设计表 648
- 26.3.2 设计索引 652
- 26.3.3 设计视图 653
- 26.3.4 设计触发器 654