本书以当前流行的MySQL 5.7作为平台,内容分为MySQL基础、习题、实验、数据库综合实训、数据库应用开发实训和附录。本版对MySQL基础部分进行了系统优化,使内容更加简明扼要,对原有实例进行了修改,从而为实验数据库与教程的一体化创造了条件。全书MySQL命令分层缩进,基础部分数据库表列名采用汉字,综合实训数据库表列名则采用英文字符,数据库及其对象、函数名等采用小写字母,系统关键字采用大写字母,语句格式清晰易懂,运行结果直观。数据库综合实训通过一个规模不大的数据库综合实例,将数据库主要对象及其相互配合包含其中,同时又为后面的数据库应用开发实训进行了精心的数据准备。实验部分数据库与基础部分的是一样的,这样实验更加方便,供读者自己思考和练习的内容也更系统和丰富,同时更有利于读者理解基础部分所学知识。习题部分进一步系统化,丰富了题型和内容。数据库应用开发实训介绍目前流行的PHP、Spring Boot、Python、Android Studio、Qt、C#和Visual C++等平台操作MySQL数据库的实例。每一个实训既可独立构成一个小的应用系统,包含操作数据库的基本方法,同时又可把几个实训合为一个综合大系统。本书融基础和应用于一体,系统性、应用性均比较完善。由于本书的内容体系具有自己的特色,并且从方便教和学两个角度组织内容、调试实例和安排先后顺序,所以用本书教和学均比较方便,读者可根据自己的实际需要比较和选择本书各部分内容。本书免费提供配套的教学视频(建议在Wi-Fi环境下扫码观看)、教学课件和习题参考答案。免费提供7个实训平台上可运行的源程序文件。同时免费提供实训网络文档和配套的源程序文件,需要的读者请到华信教育资源网(www.hxedu.com.cn)免费下载。本书可作为大学本科、高职高专院校有关课程教材,也可供广大数据库应用开发人员使用或参考。
郑阿奇,副教授,曾任教于南京师范大学。先后主编出版计算机教材和图书超过100本,受到市场广泛好评。出版的教材曾获得高等教育国家“十一五”规划教材、高等职业教育“十二五”国家规划教材、高等职业教育“十三五”国家规划教材、江苏省高等职业教育“十四五”规划教材、江苏省教学成果二等奖、高等职业教育优秀教材一等奖等荣誉。
第一部分 MySQL基础
第1章 数据库基础 1
1.1 数据库基本概念 1
1.1.1 数据库及其系统 1
1.1.2 数据模型 2
1.1.3 关系数据库 3
1.2 数据库设计 4
1.2.1 概念模型 4
1.2.2 逻辑模型 5
1.2.3 物理模型 6
1.3 MySQL的安装、配置和运行 6
1.3.1 MySQL的安装和配置 7
1.3.2 MySQL数据库试运行 7
1.4 常用MySQL界面工具 9
1.4.1 界面工具简介 9
1.4.2 图形化界面工具 10
第2章 数据类型 13
2.1 数值型 13
2.1.1 整数类型 13
2.1.2 实数类型 13
2.1.3 位类型 14
2.2 字符串型和二进制串型 14
2.2.1 字符串型 14
2.2.2 二进制串型 17
2.3 日期时间型 18
2.4 枚举型、集合型、键值型和空间型 19
2.4.1 枚举型和集合型 19
2.4.2 键值(JSON)型 21
2.4.3 空间型 21
第3章 数据库和表 23
3.1 数据库 23
3.1.1 创建数据库 23
3.1.2 修改数据库 24
3.1.3 删除数据库 24
3.1.4 打开和关闭数据库 25
3.2 表 25
3.2.1 创建表 25
3.2.2 修改表 28
3.2.3 表的删除和更名 30
3.3 表记录的操作 31
3.3.1 插入记录 31
3.3.2 修改记录 33
3.3.3 删除记录 34
3.4 表操作综合应用 35
3.4.1 准备系统查询需要的表 35
3.4.2 非基本数据类型表的操作 36
3.5 表选项 38
3.5.1 存储引擎 38
3.5.2 表空间 42
3.5.3 表记录分区 45
3.5.4 表记录行格式 52
第4章 查询和视图 53
4.1 关系运算基础 53
4.1.1 选择(Selection)运算 54
4.1.2 投影(Projection)运算 54
4.1.3 连接(Join)运算 55
4.2 数据库表查询 56
4.2.1 选择输出项 56
4.2.2 限制输出行 60
4.2.3 指定查询数据源 61
4.2.4 查询条件 64
4.2.5 查询分组 72
4.2.6 分组后过滤 73
4.2.7 输出排序 74
4.2.8 联合查询 76
4.2.9 输出到变量或文件 76
4.2.10 非基本数据类型查询 77
4.2.11 分区查询 80
4.3 视图 82
4.3.1 创建视图 82
4.3.2 查询视图 83
4.3.3 更新视图 83
4.3.4 删除视图 85
第5章 索引与数据完整性 86
5.1 索引 86
5.1.1 索引的分类 86
5.1.2 创建和删除索引 87
5.1.3 分析和使用索引 89
5.1.4 评估查询 91
5.2 数据完整性 92
5.2.1 实体完整性约束 92
5.2.2 参照完整性约束 93
5.2.3 域完整性约束 94
第6章 SQL扩展语言和系统函数 97
6.1 SQL简介 97
6.2 常量和变量 97
6.2.1 常量 97
6.2.2 变量 100
6.3 运算符与表达式 102
6.3.1 算术运算符 102
6.3.2 比较运算符 103
6.3.3 逻辑运算符 105
6.3.4 位运算符 106
6.3.5 运算符优先级 107
6.3.6 表达式 107
6.4 系统内置函数 108
6.4.1 数学函数 108
6.4.2 聚合函数 111
6.4.3 字符串函数 111
6.4.4 日期时间函数 114
6.4.5 加密函数 116
6.4.6 控制流函数 117
6.4.7 格式化函数 118
6.4.8 类型转换函数 119
6.4.9 系统信息函数 119
第7章 过程式数据库对象 122
7.1 存储过程 122
7.1.1 存储过程简介 122
7.1.2 存储过程体 124
7.1.3 错误自动处理 129
7.2 存储函数 131
7.3 游标 132
7.4 触发器 134
7.5 事件 137
7.5.1 创建事件 137
7.5.2 修改和删除事件 140
第8章 数据库备份与恢复 141
8.1 SQL语句导出或导入数据 141
8.1.1 表记录导出 141
8.1.2 导入文本数据 142
8.2 数据库备份与恢复 143
8.2.1 Windows命令行窗口备份和
恢复 143
8.2.2 使用日志文件备份和恢复 145
8.3 直接复制文件 146
第9章 用户管理和权限控制 147
9.1 用户管理 147
9.1.1 添加、删除用户 147
9.1.2 修改用户名、密码 148
9.2 权限控制 148
9.2.1 授予权限 148
9.2.2 权限转移和限制 152
9.2.3 权限回收 152
第10章 事务管理和多用户操作 154
10.1 事务 154
10.1.1 事务的概念 154
10.1.2 ACID属性 154
10.1.3 事务处理 155
10.1.4 事务应用实例 156
10.1.5 事务隔离级 157
10.2 多用户 159
10.2.1 锁定的级别 159
10.2.2 锁定与解锁 159
10.2.3 死锁 164
10.2.4 并发访问的问题 164
第二部分 习题
第1章 数据库基础 165
第2章 数据类型 166
第3章 数据库和表 167
第4章 查询和视图 168
第5章 索引与数据完整性 170
第6章 SQL扩展语言和系统函数 171
第7章 过程式数据库对象 172
第8章 数据库备份与恢复 174
第9章 用户管理和权限控制 174
第10章 事务管理和多用户操作 175
第三部分 实验
实验1 MySQL构建 177
实验1.1 MySQL实例构建 177
实验1.2 MySQL多实例 177
实验2 数据类型 177
实验2.1 基本数据类型 177
实验2.2 其他数据类型 179
实验3 创建数据库和表 180
实验3.1 创建数据库 180
实验3.2 创建和修改表结构 180
实验3.3 表记录操作 181
实验3.4 表记录分区查询 181
实验3.5 表空间和表分区 182
实验4 表记录查询和视图 182
实验4.1 表记录查询 182
实验4.2 表视图 182
实验5 索引和数据完整性 182
实验6 SQL扩展语言和系统函数 183
实验7 过程式数据库对象 183
实验7.1 存储过程 183
实验7.2 存储函数 184
实验7.3 游标 184
实验7.4 触发器 184
实验7.5 事件 184
实验8 数据库备份与恢复 184
实验8.1 SQL语句导出或导入数据 184
实验8.2 数据库备份和恢复 184
实验9 用户管理和权限控制 185
实验10 事务管理和多用户操作 185
第四部分 数据库综合实训
P0.1 创建数据库及其对象 186
P0.1.1 创建数据库 186
P0.1.2 创建表 186
P0.1.3 创建表间记录完整性 188
P0.1.4 创建触发器 188
P0.1.5 创建和执行存储过程 189
P0.2 测试数据库对象关系的正确性 191
P0.2.1 插入学生表记录 191
P0.2.2 插入课程表记录 191
P0.2.3 插入成绩表记录 191
P0.2.4 触发器功能测试 192
P0.2.5 表间记录完整性测试 192
P0.2.6 存储过程的功能测试 193
P0.3 功能和界面 193
P0.3.1 系统主页 193
P0.3.2 “学生管理”功能界面 193
P0.3.3 “课程管理”功能界面 194
P0.3.4 “成绩管理”功能界面 195
第五部分 数据库应用开发实训
实训1 PHP/MySQL学生成绩管理系统 196
P1.1 PHP开发平台的搭建 196
P1.1.1 创建PHP环境 196
P1.1.2 Eclipse的安装与配置 196
P1.2 PHP开发入门 196
P1.2.1 PHP项目的建立 196
P1.2.2 PHP项目的运行 198
P1.2.3 PHP连接MySQL 199
P1.3 系统主页设计 200
P1.3.1 主界面 200
P1.3.2 功能导航 201
P1.4 学生管理 202
P1.4.1 界面设计 202
P1.4.2 功能实现 205
P1.5 成绩管理 207
P1.5.1 界面设计 207
P1.5.2 功能实现 210
P1.6 课程管理 210
实训2 Spring Boot/MySQL学生成绩管理
系统 213
P2.1 Spring Boot开发环境配置 213
P2.1.1 安装JDK 213
P2.1.2 安装Maven 213
P2.1.3 安装IDEA 214
P2.2 系统架构及分层设计 214
P2.2.1 系统架构 214
P2.2.2 分层设计 214
P2.3 Spring Boot程序开发 215
P2.3.1 开发前的准备 215
P2.3.2 持久层开发 218
P2.3.3 业务层开发 221
P2.3.4 表示层开发 225
P2.3.5 运行测试 233
实训3 Python/MySQL学生成绩管理系统 235
P3.1 Python环境安装 235
P3.1.1 安装Python环境 235
P3.1.2 安装MySQL驱动库 235
P3.2 Python程序开发 236
P3.2.1 开发前的准备工作 236
P3.2.2实现思路 237
P3.2.3 功能代码 237
P3.2.4 运行效果 241
实训4 Android Studio/MySQL学生成绩
管理系统 242
P4.1 环境搭建 242
P4.1.1 基本原理 242
P4.1.2 安装开发工具 243
P4.1.3 准备MySQL数据库 243
P4.2 服务器端Servlet程序开发 243
P4.2.1 创建动态Web项目 243
P4.2.2 编写Servlet程序 245
P4.2.3 打包部署 250
P4.3 移动端Android程序开发 251
P4.3.1 创建Android工程 251
P4.3.2 设计界面 253
P4.3.3 编写移动端代码 253
P4.3.4 运行测试 258
实训5 Qt/MySQL学生成绩管理系统 262
P5.1 Qt的安装 262
P5.2 编译MySQL驱动 262
P5.3 Qt程序开发 265
P5.3.1 开发前的准备 265
P5.3.2 界面设计 269
P5.3.3 函数、槽、变量声明 271
P5.3.4 功能实现 272
P5.3.5 运行效果 277
实训6 C#/WebService/MySQL学生成绩
管理系统 278
P6.1 C#窗体应用程序开发 278
P6.1.1 创建项目 278
P6.1.2 安装MySQL的.NET驱动 278
P6.1.3 准备MySQL数据库 280
P6.1.4 界面设计 280
P6.1.5 功能实现 282
P6.1.6 运行效果 286
P6.2 C#程序使用WebService 287
P6.2.1 客户端引用WebService 287
P6.2.2 程序调用WebService 289
实训7 Visual C++(VS)/WebService/
MySQL学生成绩管理系统 291
P7.1 配置ODBC数据源 291
P7.1.1 准备MySQL数据库 291
P7.1.2 创建数据源 291
P7.2 MFC程序开发 293
P7.2.1 创建项目 293
P7.2.2 界面设计 294
P7.2.3 成绩查询功能(基于ODBC
数据源) 297
P7.2.4 录入、删除功能(基于MySQL
API) 302
P7.3 Visual C++程序使用WebService 306
P7.3.1 编译SOAP客户端 306
P7.3.2 程序调用WebService 307
第六部分 附录
附录A 学生成绩数据库(XSCJ)表结构样
本记录 309