目录
第1章  认识数据库与MySQL	001
1.1 认识数据库	001
1.1.1 数据库的基本概念	001
1.1.2 数据库系统的组成	002
1.1.3 数据库系统的特点	003
1.2 认识MySQL数据库	003
1.2.1 MySQL系统特性	004
1.2.2 选择MySQL版本	004
1.2.3 MySQL版本的命名机制	004
1.3 安装与配置MySQL 8.0	005
1.3.1 下载MySQL软件	005
1.3.2 安装MySQL软件	006
1.3.3 配置MySQL软件	008
1.4 启动并登录MySQL数据库	012
1.4.1 启动MySQL服务	012
1.4.2 登录MySQL数据库	013
1.4.3 配置Path变量	014
1.5 卸载MySQL数据库	016
1.6 课后习题与练习	017
1.7 新手疑难问题解答	018
1.8 实战训练	018
第2章  MySQL的管理工具	019
2.1 认识常用图形管理工具	019
2.1.1 MySQL Workbench	019
2.1.2 phpMyAdmin	020
2.1.3 Navicat for MySQL	020
2.2 MySQL Workbench的应用	021
2.2.1 下载MySQL Workbench	021
2.2.2 安装MySQL Workbench	022
2.2.3 创建数据库连接	023
2.2.4 创建与删除数据库	025
2.2.5 创建和删除新的数据表	026
2.2.6 添加与修改数据表记录	028
2.2.7 查询表中的数据记录	028
2.2.8 修改数据表的数据结构	029
2.3 phpMyAdmin的应用	029
2.3.1 下载并启动phpMyAdmin	029
2.3.2 创建与删除数据库	031
2.3.3 创建与删除数据表	031
2.3.4 添加数据表记录	033
2.3.5 数据库的备份	034
2.3.6 数据库的还原	034
2.4 Navicat for MySQL的应用	035
2.4.1 下载与安装Navicat for MySQL	036
2.4.2 连接MySQL服务器	037
2.4.3 创建与删除数据库	038
2.4.4 创建与删除数据表	039
2.4.5 添加与修改数据记录	040
2.4.6 查询数据表中的数据	041
2.4.7 数据库备份和还原	041
2.5 以图形方式管理MySQL用户	043
2.5.1 创建用户账户	043
2.5.2 删除用户账户	045
2.5.3 加密用户账户	045
2.5.4 用户权限管理	046
2.6 课后习题与练习	047
2.7 新手疑难问题解答	048
2.8 实战训练	049
第3章  数据库的创建与操作	050
3.1 MySQL数据库概述	050
3.1.1 数据库特点	050
3.1.2 数据库对象	051
3.1.3 系统数据库	052
3.2 创建数据库	053
3.2.1 使用CREATE DATABASE语句创建	053
3.2.2 使用mysqladmin命令创建	053
3.2.3 使用PHP脚本创建	054
3.3 选择与查看数据库	055
3.3.1 从命令提示窗口中选择	055
3.3.2 使用PHP脚本选择	055
3.3.3 使用命令查看数据库	056
3.4 删除数据库	056
3.4.1 使用DROP语句删除	056
3.4.2 使用mysqladmin命令删除	057
3.4.3 使用PHP脚本删除	057
3.5 数据库存储引擎	058
3.5.1 MySQL存储引擎简介	058
3.5.2 InnoDB存储引擎	060
3.5.3 MyISAM存储引擎	060
3.5.4 MEMORY存储引擎	061
3.5.5 存储引擎的选择	061
3.6 课后习题与练习	062
3.7 新手疑难问题解答	063
3.8 实战训练	063
第4章  数据表的创建与操作	064
4.1 数据表中能存放的数据类型	064
4.1.1 数值类型	064
4.1.2 日期和时间类型	066
4.1.3 字符串类型	066
4.1.4 选择数据类型	067
4.2 创建数据表	068
4.2.1 创建数据表的语法形式	068
4.2.2 使用CREATE语句创建数据表	068
4.3 查看数据表的结构	069
4.3.1 查看表基本结构	070
4.3.2 查看表详细结构	070
4.4 修改数据表	070
4.4.1 修改数据表的名称	070
4.4.2 修改字段数据类型	071
4.4.3 修改数据表的字段名	072
4.4.4 在数据表中添加字段	072
4.4.5 修改字段的排序方式	074
4.4.6 删除不需要的字段	075
4.5 删除数据表	075
4.5.1 删除没有被关联的表	075
4.5.2 删除被其他表关联的主表	076
4.6 课后习题与练习	077
4.7 新手疑难问题解答	079
4.8 实战训练	079
第5章  数据表的完整性约束	080
5.1 数据完整性及其分类	080
5.1.1 数据完整性的分类	080
5.1.2 表中的约束条件有哪些	081
5.2 主键约束	081
5.2.1 创建表时添加主键	081
5.2.2 修改表时添加主键	083
5.2.3 创建联合主键约束	084
5.2.4 删除表中的主键	085
5.3 外键约束	086
5.3.1 创建表时添加外键约束	086
5.3.2 修改表时添加外键约束	088
5.3.3 删除表中的外键约束	088
5.4 默认约束	089
5.4.1 创建表时添加默认约束	089
5.4.2 修改表时添加默认约束	090
5.4.3 删除表中的默认约束	090
5.5 唯一性约束	091
5.5.1 创建表时添加唯一性约束	091
5.5.2 修改表时添加唯一性约束	092
5.5.3 删除表中的唯一性约束	092
5.6 非空约束	093
5.6.1 创建表时添加非空约束	093
5.6.2 修改表时添加非空约束	094
5.6.3 删除表中的非空约束	094
5.7 字段的自增属性	095
5.7.1 创建表时添加自增属性	095
5.7.2 修改表时添加自增属性	096
5.7.3 删除表中的自增属性	096
5.8 课后习题与练习	096
5.9 新手疑难问题解答	097
5.10 实战训练	098
第6章  插入、更新与删除数据记录	100
6.1 向数据表中插入数据	100
6.1.1 给表里的所有字段插入数据	100
6.1.2 向表中添加数据时使用默认值	103
6.1.3 一次插入多条数据	104
6.1.4 通过复制表数据插入数据	105
6.2 更新数据表中的数据	107
6.2.1 更新表中的全部数据	107
6.2.2 更新表中指定单行数据	108
6.2.3 更新表中指定多行数据	109
6.3 删除数据表中的数据	109
6.3.1 根据条件清除数据	109
6.3.2 清空表中的数据	110
6.4 课后习题与练习	111
6.5 新手疑难问题解答	112
6.6 实战训练	112
第7章  数据表的简单查询	115
7.1 认识SELECT语句	115
7.2 数据的简单查询	116
7.2.1 查询表中所有数据	116
7.2.2 查询表中想要的数据	118
7.2.3 对查询结果进行计算	118
7.2.4 为结果列使用别名	119
7.2.5 在查询时去除重复项	119
7.2.6 在查询结果中给表取别名	119
7.2.7 使用LIMIT限制查询数据	120
7.3 使用WHERE子句进行条件查询	121
7.3.1 比较查询条件的数据查询	121
7.3.2 带BETWEEN AND的范围查询	122
7.3.3 带IN关键字的查询	123
7.3.4 带LIKE的字符匹配查询	124
7.3.5 未知空数据的查询	126
7.3.6 带AND的多条件查询	126
7.3.7 带OR的多条件查询	127
7.4 操作查询的结果	129
7.4.1 对查询结果进行排序	129
7.4.2 对查询结果进行分组	131
7.4.3 对分组结果过滤查询	133
7.5 使用集合函数进行统计查询	134
7.5.1 使用SUM()求列的和	134
7.5.2 使用AVG()求列平均值	135
7.5.3 使用MAX()求列最大值	135
7.5.4 使用MIN()求列最小值	136
7.5.5 使用COUNT()统计	137
7.6 课后习题与练习	138
7.7 新手疑难问题解答	139
7.8 实战训练	139
第8章  数据表的复杂查询	140
8.1 子查询	140
8.1.1 带比较运算符的子查询	140
8.1.2 带IN关键字的子查询	142
8.1.3 带ANY关键字的子查询	143
8.1.4 带ALL关键字的子查询	143
8.1.5 带SOME关键字的子查询	144
8.1.6 带EXISTS关键字的子查询	144
8.2 合并查询结果	145
8.2.1 合并查询的语法格式	145
8.2.2 合并查询的具体应用	145
8.3 内连接查询	147
8.3.1 笛卡儿积查询	147
8.3.2 内连接的简单查询	147
8.3.3 等值内连接查询	148
8.3.4 非等值内连接查询	149
8.3.5 自连接的内连接查询	149
8.3.6 带条件的内连接查询	149
8.4 外连接查询	150
8.4.1 认识外连接查询	150
8.4.2 左外连接查询	151
8.4.3 右外连接查询	151
8.5 使用正则表达式查询	152
8.5.1 查询以特定字符或字符串开头的记录	152
8.5.2 查询以特定字符或字符串结尾的记录	153
8.5.3 用符号“.”代替字符串中的任意一个字符	153
8.5.4 匹配指定字符中的任意一个	154
8.5.5 匹配指定字符以外的字符	155
8.5.6 匹配指定字符串	155
8.5.7 用“*”和“+”匹配多个字符	156
8.5.8 使用{M}或者{M,N}指定字符串连续出现的次数	156
8.6 课后习题与练习	157
8.7 新手疑难问题解答	158
8.8 实战训练	158
第9章  MySQL编程基础	159
9.1 MySQL语言编程	159
9.2 认识常量与变量	160
9.2.1 认识常量	160
9.2.2 定义变量	161
9.3 常用运算符及优先级	163
9.3.1 算术运算符	163
9.3.2 比较运算符	164
9.3.3 逻辑运算符	169
9.3.4 位运算符	171
9.3.5 运算符的优先级	173
9.4 认识流程控制语句	173
9.4.1 IF语句	174
9.4.2 CASE语句	174
9.4.3 LOOP语句	175
9.4.4 LEAVE语句	175
9.4.5 ITERATE语句	175
9.4.6 REPEAT语句	176
9.4.7 WHILE语句	176
9.5 课后习题与练习	177
9.6 新手疑难问题解答	178
9.7 实战训练	178
第10章  内置函数与自定义函数	179
10.1 数学函数	179
10.1.1 求绝对值和返回圆周率	180
10.1.2 获取数平方根与求余	180
10.1.3 获取四舍五入后的值	181
10.1.4 求数值的幂运算	182
10.1.5 求数值的对数运算值	182
10.1.6 角度与弧度的相互转换	183
10.1.7 求正弦值与余弦值	183
10.1.8 求正切值与余切值	183
10.2 字符串函数	184
10.2.1 计算字符串的字符数	185
10.2.2 计算字符串的长度	185
10.2.3 合并字符串	185
10.2.4 替换字符串	186
10.2.5 字母大小写转换	187
10.2.6 获取指定长度字符串	187
10.2.7 填充字符串	188
10.2.8 删除字符串的空格	188
10.3 日期和时间函数	189
10.3.1 获取当前日期和当前时间	190
10.3.2 获取当前日期和时间	191
10.3.3 获取UNIX格式的时间	191
10.3.4 返回UTC日期和返回UTC时间	192
10.3.5 获取指定日期的月份	192
10.3.6 获取指定日期的星期数	192
10.3.7 获取指定日期在一年中的星期周数	193
10.3.8 时间和秒钟的相互转换	194
10.3.9 日期和时间的加减运算	194
10.3.10 将日期和时间进行格式化	196
10.4 其他内置函数	197
10.4.1 条件判断函数	197
10.4.2 系统信息函数	199
10.4.3 数据加密函数	202
10.5 自定义函数	202
10.5.1 创建自定义函数	202
10.5.2 调用自定义函数	203
10.5.3 查看自定义函数	204
10.5.4 修改自定义函数	205
10.5.5 删除自定义函数	206
10.6 课后习题与练习	207
10.7 新手疑难问题解答	208
10.8 实战训练	208
第11章  视图的创建与应用	209
11.1 了解视图	209
11.1.1 视图的含义	209
11.1.2 视图的作用	210
11.2 创建视图	210
11.2.1 创建视图的语法格式	210
11.2.2 在单表上创建视图	211
11.2.3 在多表上创建视图	212
11.3 修改视图	213
11.3.1 修改视图的语法格式	213
11.3.2 使用CREATE OR REPLACE VIEW语句修改视图	214
11.3.3 使用ALTER语句修改视图	215
11.4 查看视图信息	216
11.4.1 使用DESCRIBE语句查看	216
11.4.2 使用SHOW TABLE STATUS语句查看	216
11.4.3 使用SHOW CREATE VIEW语句查看	217
11.4.4 在views表中查看视图详细信息	218
11.5 使用视图更新数据	218
11.5.1 通过视图插入数据	219
11.5.2 通过视图修改数据	220
11.5.3 通过视图删除数据	220
11.6 删除视图	221
11.6.1 删除视图的语法	221
11.6.2 删除不用的视图	222
11.7 课后习题与练习	222
11.8 新手疑难问题解答	223
11.9 实战训练	224
第12章  索引的创建与应用	225
12.1 了解索引	225
12.1.1 索引的概念	225
12.1.2 索引的作用	226
12.1.3 索引的分类	226
12.2 创建数据表时创建索引	226
12.2.1 创建普通索引	227
12.2.2 创建唯一索引	228
12.2.3 创建全文索引	229
12.2.4 创建单列索引	230
12.2.5 创建多列索引	230
12.2.6 创建空间索引	231
12.3 在已经存在的表上创建索引	232
12.3.1 创建普通索引	233
12.3.2 创建唯一索引	233
12.3.3 创建全文索引	234
12.3.4 创建单列索引	234
12.3.5 创建多列索引	235
12.3.6 创建空间索引	235
12.4 使用ALTER TABLE语句创建索引	236
12.4.1 创建普通索引	237
12.4.2 创建唯一索引	237
12.4.3 创建全文索引	238
12.4.4 创建单列索引	238
12.4.5 创建多列索引	238
12.4.6 创建空间索引	239
12.5 删除索引	239
12.5.1 使用ALTER TABLE语句删除索引	239
12.5.2 使用DROP INDEX语句删除索引	240
12.6 课后习题与练习	240
12.7 新手疑难问题解答	241
12.8 实战训练	242
第13章  触发器的创建与应用	243
13.1 了解触发器	243
13.2 创建触发器	244
13.2.1 创建一条执行语句的触发器	244
13.2.2 创建多条执行语句的触发器	246
13.3 查看触发器	247
13.3.1 使用SHOW TRIGGERS语句查看	247
13.3.2 通过INFORMATION_SCHEMA查看	247
13.4 删除触发器	249
13.5 课后习题与练习	249
13.6 新手疑难问题解答	250
13.7 实战训练	250
第14章  存储过程的创建与应用	251
14.1 了解存储过程	251
14.1.1 什么是存储过程	251
14.1.2 存储过程的作用	252
14.2 创建存储过程	252
14.2.1 创建存储过程的语法格式	252
14.2.2 创建不带参数的存储过程	253
14.2.3 创建带有参数的存储过程	254
14.3 调用存储过程	254
14.3.1 调用存储过程的语法格式	254
14.3.2 调用不带参数的存储过程	254
14.3.3 调用带有参数的存储过程	255
14.4 修改存储过程	255
14.4.1 修改存储过程的语法格式	255
14.4.2 使用SQL语句修改存储过程	256
14.5 查看存储过程	257
14.5.1 使用SHOW PROCEDURE STATUS语句查看	257
14.5.2 使用SHOW CREATE PROCEDURE语句查看	257
14.5.3 通过INFORMATION_SCHEMA.ROUTINES查看	258
14.6 删除存储过程	258
14.7 课后习题与练习	259
14.8 新手疑难问题解答	260
14.9 实战训练	260
第15章  MySQL用户的管理	261
15.1 认识用户权限表	261
15.1.1 user表	261
15.1.2 db表	262
15.1.3 tables_priv表	263
15.1.4 columns_priv表	264
15.1.5 procs_priv表	264
15.2 用户账户的管理	265
15.2.1 创建用户账户	265
15.2.2 删除用户账户	266
15.3 用户权限的管理	268
15.3.1 认识用户权限	268
15.3.2 授予用户权限	268
15.3.3 查看用户权限	270
15.3.4 收回用户权限	270
15.4 用户角色的管理	271
15.4.1 创建角色	271
15.4.2 给角色授权	271
15.4.3 删除角色	272
15.5 课后习题与练习	273
15.6 新手疑难问题解答	274
15.7 实战训练	274
第16章  MySQL日志的管理	275
16.1 错误日志	275
16.1.1 启动错误日志	275
16.1.2 查看错误日志	276
16.1.3 删除错误日志	276
16.2 二进制日志	276
16.2.1 启动二进制日志	277
16.2.2 查看二进制日志	278
16.2.3 删除二进制日志	279
16.3 通用查询日志	280
16.3.1 启动通用查询日志	280
16.3.2 查看通用查询日志	281
16.3.3 删除通用查询日志	281
16.4 慢查询日志	281
16.4.1 启动慢查询日志	281
16.4.2 查看慢查询日志	282
16.4.3 删除慢查询日志	282
16.5 课后习题与练习	282
16.6 新手疑难问题解答	283
16.7 实战训练	284
第17章  MySQL的性能优化	285
17.1 认识MySQL性能优化	285
17.2 查询速度的优化	286
17.2.1 分析查询语句	286
17.2.2 使用索引优化查询	289
17.2.3 使用索引查询的缺陷	289
17.2.4 优化子查询	292
17.3 数据库结构的优化	292
17.3.1 通过分解表来优化	292
17.3.2 通过中间表来优化	293
17.3.3 通过冗余字段优化	294
17.3.4 优化插入记录的速度	295
17.3.5 分析表、检查表和优化表	296
17.4 MySQL服务器的优化	298
17.4.1 服务器硬件的优化	298
17.4.2 MySQL参数的优化	298
17.5 课后习题与练习	299
17.6 新手疑难问题解答	300
17.7 实战训练	300
第18章  数据库的备份与还原	301
18.1 数据库的备份	301
18.1.1 使用MySQLdump工具备份	301
18.1.2 使用MySQLhotcopy工具快速备份	305
18.1.3 直接复制整个数据库目录	306
18.2 数据库的还原	306
18.2.1 使用MySQL命令还原	306
18.2.2 使用MySQLhotcopy工具快速还原	307
18.2.3 直接复制到数据库目录	307
18.3 数据库的迁移	308
18.3.1 相同版本之间的迁移	308
18.3.2 不同版本之间的迁移	308
18.3.3 不同数据库之间的迁移	308
18.4 数据表的导出和导入	309
18.4.1 使用MySQL命令导出	309
18.4.2 使用MySQLdump命令导出	311
18.4.3 使用SELECT…INTO OUTFILE语句导出	312
18.4.4 使用LOAD DATA INFILE语句导入	315
18.4.5 使用MySQLimport命令导入	317
18.5 课后习题与练习	318
18.6 新手疑难问题解答	319
18.7 实战训练	319