
MySQL是世界上最受欢迎的数据库管理系统之一,其高效、稳定、灵活、可扩展性强并且简单易学,这些特性使它在全球获得越来越多开发人员的青睐。本书结合不同难度的案例,全面介绍MySQL的各项技术及实战技能。通过本书的学习,读者可以轻松掌握最前沿的MySQL技术,为以后高级特性的学习和应用程序的开发夯实数据库基础。
本版分为3篇20章。第一篇介绍MySQL的基础知识,包括数据库与MySQL概述、MySQL的安装与配置、数据库的操作、数据表的操作、MySQL的数据操作、MySQL的数据类型、MySQL的运算符、MySQL的单表/多表查询、索引、视图、存储过程和函数、触发器、事务和锁等内容;第二篇介绍MySQL的高级特性,如用户安全管理、数据库备份和恢复、日志管理等;第三篇学习MySQL实战开发相关的内容。
《MySQL 5.7从入门到实战》是入门MySQL的好书,相信丰富的示例能够成为读者必要的参考资料,是MySQL初学者绝佳的首选。
前 言
本书完全是从一个新手的视角去学习MySQL数据库管理系统。MySQL是一款非常优秀的自由软件,而且已经是世界上流行的数据库之一,国内很多大型的企业都选择了MySQL作为数据库,对MySQL数据库技术人员的需求旺盛,很多知名企业都在招聘技术能力强的MySQL数据库技术人员和管理人员,这些都证明了MySQL数据库的可靠性、实用性和受欢迎程度。
笔者是在实际项目开发过程中接触MySQL数据库的,一边学习一边使用,总体感受MySQL数据库功能强大,而且使用方便。所以在网站开发的过程中,希望选择MySQL作为数据库。
市面上已经有不少MySQL相关的图书,但随着MySQL版本的升级,原有的内容已经陈旧不再适用于新版本,鲜见一本书根据MySQL的版本升级更新相关的内容。本书针对市场对MySQL数据库系统的旺盛需求,以及考虑到初学者需要较新的书本来引导以便快速入门,选择了较新且稳定的MySQL 5.7版本,从安装到应用于实际项目,一步一步讲解,希望能够为初学者提供一些帮助,让他们能够在较短的时间内掌握MySQL数据库技术的基本知识。
读者在学习MySQL数据库的过程中,很关键的一点就是要对照书本内容多练习,只有不断地上机实践才能将知识理解透彻并真正掌握,做到灵活运用。本书针对初学者量身定做,内容注重实战,书中大部分章节都提供了综合的示例,引导读者操作和分析,从而更好地学习和掌握MySQL数据库的知识。
本书涉及的软件或工具
MySQL Workbench SQLyog Navicat
本书涉及的一些案例
网上课堂系统 人力资源管理系统 论坛管理系统
本书源码、课件、视频下载
本书配套下载文件包括源码、课件、教学视频,下载地址(注意数字与英文字母大小写)如下:
https://pan.baidu.com/s/1NJo0oKUaEtETlTpqZ2rylw
(密码:ycnt)
也可以扫描右边二维码获取下载地址。如果下载有问题,或者对本书有任何疑问,请联系booksaga@163.com,邮件主题为“MySQL 5.7从入门到实战”。
适合本书的读者
? MySQL入门人员
? 爱好数据库的大中专院校在校的学生
? PHP、Java、Python开发人员
? 可作为各种培训学校的入门实践教辅教材
本书由张婷主笔,其他参与创作的还有王政、王超、李志杰、尹兴志、张春洋、刘力溯、谢志强、王晓华、杨旺功、薛燚。
编 者
2018年3月
目 录
第一篇 MySQL基础
第1章 数据库与MySQL 3
1.1 认识数据库 3
1.1.1 我们为什么必须学习数据库 3
1.1.2 数据库技术经历的阶段 4
1.1.3 数据库管理系统提供的功能 5
1.2 当前流行的数据库 6
1.2.1 Oracle 7
1.2.2 SQL Server 7
1.2.3 IBM的DB2 7
1.2.4 MySQL 7
1.2.5 PostgreSQL 7
1.3 数据库管理系统的基本组成 8
1.3.1 数据库 8
1.3.2 数据表 8
1.3.3 数据库开发语言SQL 9
1.4 认识MySQL数据库 10
1.4.1 MySQL与开源文化 10
1.4.2 MySQL发展历史 10
1.4.3 使用MySQL的优势 11
1.4.4 MySQL集群 12
1.5 经典习题与面试题 14
1.6 本章小结 15
第2章 MySQL的安装与配置 16
2.1 Windows平台下安装与配置MySQL 16
2.1.1 安装MySQL 5.7 16
2.1.2 配置MySQL 5.7 20
2.1.3 启动MySQL服务 26
2.1.4 关闭MySQL服务 28
2.1.5 配置Path变量 29
2.1.6 登录MySQL数据库 30
2.2 Linux平台下安装与配置MySQL 31
2.2.1 安装和配置MySQL 5.7 31
2.2.2 启动MySQL服务 34
2.2.3 登录MySQL数据库 36
2.3 Mac OS X平台下安装与配置MySQL 36
2.3.1 安装MySQL 5.7 36
2.3.2 启动MySQL 5.7 39
2.3.3 配置和登录MySQL 5.7 40
2.4 MySQL常用图形管理工具 41
2.4.1 MySQL官方客户端MySQL-Workbench 41
2.4.2 SQLyog图形管理工具 45
2.4.3 Navicat图形管理工具 48
2.4.4 小结 52
2.5 使用免安装的MySQL软件 52
2.5.1 Windows平台使用免安装的MySQL 5.7 52
2.5.2 Linux平台使用免安装的MySQL 5.7 54
2.5.3 Mac OS X平台使用免安装的MySQL 5.7 56
2.6 MySQL安装中的常见问题 59
2.7 综合示例—MySQL的安装 59
2.8 经典习题与面试题 61
2.9 本章小结 61
第3章 数据库操作 62
3.1 图形化界面操作数据库 62
3.1.1 创建数据库 62
3.1.2 删除数据库 64
3.2 命令行界面操作数据库 64
3.2.1 创建数据库 64
3.2.2 查看数据库 65
3.2.3 选择数据库 65
3.2.4 删除数据库 65
3.3 什么是存储引擎 66
3.3.1 MySQL支持的存储引擎 67
3.3.2 InnoDB存储引擎 69
3.3.3 MyISAM存储引擎 69
3.3.4 MEMORY存储引擎 70
3.3.5 选择存储引擎 70
3.4 综合示例—数据库的创建和删除 71
3.5 经典习题与面试题 72
3.6 本章小结 73
第4章 表操作 74
4.1 数据表的设计理念 74
4.2 创建表 76
4.2.1 创建表的语法形式 76
4.2.2 通过SQLyog创建表 78
4.3 查看表结构 80
4.3.1 DESCRIBE语句查看表定义 80
4.3.2 SHOW CREATE TABLE语句查看表详细定义 81
4.3.3 通过SQLyog查看表 82
4.4 删除表 83
4.4.1 删除表的语法形式 83
4.4.2 通过SQLyog删除表 84
4.5 修改表 86
4.5.1 修改表名—使用RENAME 86
4.5.2 修改表名—通过SQLyog 87
4.5.3 增加字段—在表的最后一个位置增加 88
4.5.4 增加字段—在表的第一个位置增加 89
4.5.5 增加字段—在表的指定字段之后增加 91
4.5.6 增加字段—通过SQLyog 92
4.5.7 删除字段—使用DROP 93
4.5.8 删除字段—通过SQLyoug 94
4.5.9 修改字段—修改数据类型 95
4.5.10 修改字段—修改字段的名字 96
4.5.11 修改字段—同时修改字段的名字和类型 97
4.5.12 修改字段—修改字段的顺序 98
4.5.13 修改字段—通过SQLyog 99
4.6 操作表的约束 101
4.6.1 设置表字段的非空约束(NOT NULL,NK) 102
4.6.2 设置表字段的默认值(DEFAULT) 103
4.6.3 设置表字段唯一约束(UNIQUE,UK) 104
4.6.4 设置表字段的主键(PRIMARY KEY,PK)约束 105
4.6.5 设置表字段值自动增加(AUTO_INCREMENT) 109
4.6.6 设置表字段的外键(FOREIGN KEY,FK)约束 110
4.7 综合示例—创建一个学籍数据库和学生信息表 112
4.8 经典习题与面试题 115
4.9 本章小结 116
第5章 MySQL的数据操作 117
5.1 插入数据记录 117
5.1.1 插入完整数据记录 117
5.1.2 插入数据记录一部分 119
5.1.3 插入多条完整数据记录 120
5.1.4 插入多条部分数据记录 122
5.1.5 插入查询结果 123
5.1.6 通过SQLyog来插入数据记录 125
5.2 更新数据记录 128
5.2.1 更新特定数据记录 128
5.2.2 更新所有数据记录 129
5.2.3 通过SQLyog来更新数据记录 131
5.3 删除数据记录 133
5.3.1 删除特定数据记录 133
5.3.2 删除所有数据记录 135
5.3.3 通过SQLyog删除数据记录 136
5.4 综合示例—学生表的数据操作 139
5.5 经典习题与面试题 142
5.6 本章小结 143
第6章 MySQL的数据类型 144
6.1 整数类型 144
6.2 浮点数类型和定点数类型 145
6.3 日期与时间类型 146
6.4 字符串类型 147
6.4.1 CHAR类型和VARCHAR类型 147
6.4.2 TEXT类型 148
6.4.3 ENUM类型 149
6.4.4 SET类型 149
6.5 二进制类型 149
6.5.1 BINARY和VARBINARY类型 150
6.5.2 BIT类型 150
6.5.3 BLOB类型 150
6.6 如何选择数据类型 151
6.7 经典习题与面试题 152
6.8 本章小结 153
第7章 MySQL运算符 154
7.1 运算符简介 154
7.2 算术运算符 155
7.3 比较运算符 159
7.3.1 常用比较运算符 159
7.3.2 特殊功能的比较运算符 161
7.4 逻辑运算符 165
7.5 位运算符 167
7.6 运算符的优先级 169
7.7 综合示例—运算符的使用 170
7.8 经典习题与面试题 172
7.9 本章小结 173
第8章 单表查询 174
8.1 基本数据记录查询 174
8.1.1 查询所有字段数据 174
8.1.2 查询指定字段数据 176
8.1.3 避免重复数据查询 177
8.1.4 实现数学四则运算数据查询 178
8.1.5 设置显示格式数据查询 180
8.2 条件数据记录查询 181
8.2.1 查询指定记录 182
8.2.2 带IN关键字的查询 184
8.2.3 带BETWEEN AND关键字的查询 188
8.2.4 带LIKE的模糊查询 190
8.2.5 带IS NULL空值查询 194
8.2.6 带AND的多条件查询 196
8.2.7 带OR的多条件查询 197
8.2.8 对查询结果排序 199
8.3 统计函数和分组查询 202
8.3.1 MySQL支持的统计函数 202
8.3.2 统计函数针对无数据记录的表 207
8.3.3 简单分组查询 209
8.3.4 实现统计功能分组查询 211
8.3.5 实现多个字段分组查询 213
8.3.6 实现HAVING子句限定分组查询 214
8.4 用LIMIT限制数据记录查询数量 216
8.4.1 不指定初始位置 216
8.4.2 指定初始位置 218
8.5 使用正则表达式查询 220
8.5.1 查询以特定字符或字符串开头的记录 221
8.5.2 查询以特定字符或字符串结尾的记录 222
8.5.3 用符号“.”来替代字符串中的任意一个字符 223
8.5.4 使用“*”和“+”来匹配多个字符 224
8.5.5 匹配指定字符串 225
8.5.6 匹配指定字符串中的任意一个 227
8.5.7 匹配指定字符以外的字符 229
8.5.8 使用{n,}或者{n,m}来指定字符串连续出现的次数 230
8.6 综合示例—查询学生成绩 231
8.7 经典习题与面试题 238
8.8 本章小结 240
第9章 多表查询 241
9.1 关系数据操作 241
9.1.1 并(UNION) 241
9.1.2 笛卡儿积(CARTESIAN PRODUCT) 242
9.2 内连接查询 243
9.2.1 自连接 244
9.2.2 等值连接 246
9.2.3 不等连接 250
9.3 外连接查询 252
9.3.1 左外连接 253
9.3.2 右外连接 254
9.4 复合条件连接查询 255
9.5 合并查询数据记录 257
9.5.1 带有关键字UNION的并操作 258
9.5.2 带有关键字UNION ALL的并操作 261
9.6 子查询 261
9.6.1 为什么使用子查询 262
9.6.2 带比较运算符的子查询 262
9.6.3 带关键字IN的子查询 268
9.6.4 带关键字EXISTS的子查询 269
9.6.5 带关键字ANY的子查询 271
9.6.6 带关键字ALL的子查询 275
9.7 综合示例—查询学生成绩 277
9.8 经典习题与面试题 281
9.9 本章小结 282
第10章 索引 283
10.1 什么是索引 283
10.1.1 索引的含义和特点 283
10.1.2 索引的分类 284
10.1.3 索引的设计原则 285
10.2 创建和查看索引 286
10.2.1 普通索引—创建表时直接创建 286
10.2.2 普通索引—在已经存在的表上创建 288
10.2.3 普通索引—通过ALTER TABLE语句创建 290
10.2.4 唯一索引—创建表时直接创建 291
10.2.5 唯一索引—在已经存在的表上创建 292
10.2.6 唯一索引—通过ALTER TABLE语句创建 293
10.2.7 全文索引—创建表时直接创建 294
10.2.8 全文索引—在已经存在的表上创建 296
10.2.9 全文索引—通过ALTER TABLE语句创建 297
10.2.10 多列索引—创建表时自动创建 298
10.2.11 多列索引—在已经存在的表上创建 300
10.2.12 多列索引—通过ALTER TABLE语句创建 301
10.2.13 通过SQLyog创建和修改索引 302
10.3 删除索引 307
10.3.1 删除索引的语法形式 307
10.3.2 通过SQLyog删除索引 308
10.4 综合示例—创建索引 310
10.5 经典习题与面试题 313
10.6 本章小结 314
第11章 视图 315
11.1 什么时候使用视图 315
11.2 创建视图 316
11.2.1 创建视图的语法形式 316
11.2.2 在单表上创建视图 317
11.2.3 在多表上创建视图 320
11.2.4 通过SQLyog创建视图 322
11.3 查看视图 324
11.3.1 使用DESCRIBE | DESC语句查看视图基本信息 324
11.3.2 使用SHOW TABLES语句查看视图基本信息 325
11.3.3 使用SHOW TABLE STATUS语句查看视图基本信息 326
11.3.4 使用SHOW CREATE VIEW语句查看视图详细信息 328
11.3.5 在views表中查看视图详细信息 329
11.3.6 使用SQLyog查看视图信息 329
11.4 修改视图 332
11.4.1 使用CREATE OR REPLACE VIEW语句修改视图 332
11.4.2 使用ALTER语句修改视图 334
11.4.3 通过SQLyog修改视图 335
11.5 更新视图 337
11.5.1 使用SQL语句更新视图 338
11.5.2 更新基本表后视图自动更新 339
11.5.3 删除视图中的数据 341
11.5.4 不能更新的视图 342
11.6 删除视图 345
11.6.1 删除视图的语法形式 345
11.6.2 通过SQLyog删除视图 347
11.7 综合示例—视图应用 348
11.8 经典习题与面试题 351
11.9 本章小结 352
第12章 存储过程和函数 353
12.1 创建存储过程和函数 353
12.1.1 创建存储过程 354
12.1.2 创建存储函数 357
12.1.3 变量的使用 358
12.1.4 定义条件和处理程序 359
12.1.5 光标的使用 361
12.1.6 流程控制的使用 362
12.1.7 通过SQLyog创建存储过程 366
12.2 调用存储过程和函数 371
12.2.1 调用存储过程 371
12.2.2 调用存储函数 372
12.3 查看存储过程和函数 373
12.3.1 使用SHOW STATUS语句查看存储过程和函数的状态 373
12.3.2 使用SHOW CREATE语句查看存储过程和函数的定义 374
12.3.3 从information_schema.Routine表中查看存储过程和函数的信息 375
12.4 修改存储过程和函数 377
12.4.1 修改存储过程和函数的语法 377
12.4.2 使用SQLyog修改存储过程和函数 379
12.5 删除存储过程和函数 382
12.5.1 删除存储过程和函数的语法 382
12.5.2 使用SQLyog删除存储过程和函数 383
12.6 综合示例—创建存储过程和函数 386
12.7 经典习题与面试题 389
12.8 本章小结 390
第13章 触发器 391
13.1 什么时候使用触发器 391
13.2 创建触发器 392
13.2.1 创建有一条执行语句的触发器 392
13.2.2 创建包含多条执行语句的触发器 394
13.2.3 通过SQLyog创建触发器 396
13.3 查看触发器 399
13.3.1 通过SHOW TRIGGERS语句查看触发器 399
13.3.2 通过查看系统表triggers实现查看触发器 399
13.3.3 通过SQLyog查看触发器 401
13.4 删除触发器 403
13.4.1 通过DROP TRIGGER语句删除触发器 403
13.4.2 通过工具来删除触发器 404
13.5 综合示例—创建并使用触发器 405
13.6 经典习题与面试题 410
13.7 本章小结 411
第14章 事务和锁 412
14.1 事务概述 412
14.2 MySQL事务控制语句 414
14.3 MySQL事务隔离级别 416
14.3.1 READ-UNCOMMITED(读取未提交内容) 416
14.3.2 READ-COMMITED(读取提交内容) 417
14.3.3 REPEATABLE-READ(可重读) 418
14.3.4 SERIALIZABLE(可串行化) 420
14.4 InnoDB锁机制 420
14.4.1 锁的类型 420
14.4.2 锁粒度 421
14.5 本章小结 424
第二篇 MySQL高级应用
第15章 用户安全管理 427
15.1 权限表 427
15.1.1 user表 427
15.1.2 db表 429
15.1.3 table_priv表和columns_priv表 430
15.1.4 procs_priv表 431
15.2 账户管理 432
15.2.1 登录和退出MySQL服务器 432
15.2.2 新建普通用户 434
15.2.3 删除普通用户 436
15.2.4 root用户修改自己的密码 437
15.2.5 root用户修改普通用户的密码 440
15.2.6 普通用户修改密码 443
15.2.7 root用户密码丢失的解决办法 444
15.3 权限管理 452
15.3.1 MySQL的各种权限 452
15.3.2 授权 454
15.3.3 查看权限 456
15.3.4 收回权限 458
15.4 访问控制 459
15.4.1 连接核实阶段 459
15.4.2 请求核实阶段 460
15.5 综合示例—综合管理用户权限 461
15.6 经典习题与面试题 464
15.7 本章小结 465
第16章 数据库备份与恢复 466
16.1 数据备份 466
16.1.1 使用mysqldump命令备份一个数据库 466
16.1.2 使用mysqldump命令备份一个数据库的某几张表 470
16.1.3 使用mysqldump命令备份多个数据库 472
16.1.4 直接复制整个数据库 474
16.2 数据恢复 475
16.2.1 使用MySQL命令恢复 475
16.2.2 直接复制到数据库 476
16.3 数据库迁移 477
16.3.1 相同版本的MySQL数据库之间的迁移 477
16.3.2 不同版本的MySQL数据库之间的迁移 477
16.3.3 不同数据库之间的迁移 478
16.4 表的导出和导入 478
16.4.1 使用SELECT…INTO OUTFILE导出文本文件 479
16.4.2 使用mysqldump命令导出文本文件 482
16.4.3 使用MySQL命令导出文本文件 487
16.4.4 使用LOAD DATA INFILE方式导入文本文件 491
16.4.5 使用mysqlimport方式导入文本文件 494
16.5 综合示例—数据的备份与恢复 496
16.6 经典习题与面试题 502
16.7 本章小结 503
第17章 日志管理 504
17.1 MySQL软件所支持的日志 504
17.2 操作二进制日志 505
17.2.1 启动二进制日志 505
17.2.2 查看二进制日志 507
17.2.3 使用二进制日志恢复数据库 508
17.2.4 暂停二进制日志 509
17.2.5 删除二进制日志 509
17.3 操作错误日志 512
17.3.1 启动错误日志 513
17.3.2 查看错误日志 513
17.3.3 删除错误日志 514
17.4 通用查询日志 515
17.4.1 启动通用查询日志 515
17.4.2 查看通用查询日志 516
17.4.3 停止通用查询日志 517
17.4.4 删除通用查询日志 518
17.5 慢查询日志 519
17.5.1 启动慢查询日志 519
17.5.2 查看和分析慢查询日志 522
17.5.3 停止慢查询日志 523
17.5.4 删除慢查询日志 524
17.6 综合示例—MySQL日志的综合管理 525
17.7 经典习题与面试题 532
17.8 本章小结 532
第三篇 MySQL实战
第18章 Java操作MySQL数据库 535
18.1 Java连接MySQL数据库 535
18.1.1 JDBC简介 535
18.1.2 下载JDBC驱动MySQL Connector/J 537
18.1.3 Windows下安装MySQL Connector/J驱动 538
18.1.4 Linux和Mac OS X下安装MySQL Connector/J驱动 538
18.1.5 Eclipse环境下安装MySQL Connector/J驱动 538
18.1.6 Java连接MySQL数据库 540
18.2 Java操作MySQL数据库 541
18.2.1 使用Statement执行SQL语句——executeQuery()查询 542
18.2.2 使用Statement执行SQL语句——execute()查询 543
18.2.3 使用Statement执行SQL语句——executeUpdate()插入数据 544
18.2.4 使用Statement执行SQL语句——executeUpdate()修改数据 545
18.2.5 使用Statement执行SQL语句——executeUpdate()删除数据 546
18.2.6 使用PreparedStatement执行SQL语句——executeQuery()查询 547
18.2.7 使用PreparedStatement执行SQL语句——execute()查询 549
18.2.8 使用PreparedStatement执行SQL语句——executeUpdate() 插入数据 550
18.2.9 使用PreparedStatement执行SQL语句——executeUpdate() 修改数据 551
18.2.10 使用PreparedStatement执行SQL语句— executeUpdate()删除数据 552
18.3 Java备份和恢复MySQL数据库 553
18.3.1 使用Java备份MySQL数据库 553
18.3.2 使用Java恢复MySQL数据库 554
18.4 综合示例—人力资源管理系统 556
18.5 本章小结 567
第19章 网上课堂系统数据库设计 568
19.1 系统概述 568
19.2 系统功能 568
19.3 数据库设计和实现 569
19.3.1 设计表 569
19.3.2 设计索引 577
19.3.3 设计视图 578
19.3.4 设计触发器 579
19.4 本章小结 580
第20章 论坛管理系统数据库设计 581
20.1 系统概述 581
20.2 系统功能 582
20.3 数据库设计和实现 583
20.3.1 设计表 583
20.3.2 设计索引 587
20.3.3 设计视图 588
20.3.4 设计触发器 588
20.4 本章小结 590
MySQL是世界上最受欢迎的数据库管理系统之一,其高效、稳定、灵活、可扩展性强并且简单易学,这些特性使其在全球获得越来越多开发人员的青睐。与其他数据库相比,MySQL易学易用。通过本书的学习,读者可以轻松掌握最前沿的MySQL技术,为以后高级特性的学习和应用程序的开发夯实数据库应用基础。
《MySQL 5.7从入门到实战》以零基础讲解为宗旨,以MySQL 5.7为蓝本,通过实例讲解MySQL的各项技术及实战技能。
《MySQL 5.7从入门到实战》没有枯燥的理论介绍,而是通过不同难度的案例结合,比较全面地介绍MySQL数据库技术。
《MySQL 5.7从入门到实战》适合任何想学习MySQL的人员,无论你是否从事计算机相关行业,无论你是否接触过MySQL数据库,通过本书的学习都可快速掌握MySQL管理和开发的方法和技巧。
张婷,哈尔滨工业大学硕士,曾先后在华为杭州研究所、诺基亚西门子网络公司、阿里巴巴集团担任高级开发工程师和资深开发工程师职务。有10年的C/C++、Java开发及系统设计经验,专注于互联网电商交易及大数据应用相关领域。