第1章 数据库设计概述 1
1.1 数据库概述 2
1.1.1 数据库与数据库管理系统 2
1.1.2 数据模型 3
1.1.3 结构化查询语言SQL 3
1.2 数据库的体系结构 3
1.2.1 数据库三级模式结构 3
1.2.2 三级模式之间的映射 4
1.3 E-R图 4
1.3.1 实体和属性 4
实例:设计图书馆管理系统的图书实体图
1.3.2 关系 5
1.3.3 E-R图的设计原则 5
实例:设计图书馆管理系统的E-R图
1.4 数据库设计 6
1.4.1 为实体建立数据表 6
实例:根据图书实体建立图书数据表
1.4.2 为表建立主键或外键 7
1.4.3 为字段选择合适的数据类型 7
1.4.4 定义约束条件 8
小结 8
习题 8
第2章 MySQL概述 9
2.1 为什么选择MySQL数据库 10
2.1.1 什么是MySQL数据库 10
2.1.2 MySQL的优势 10
2.1.3 MySQL的发展史 10
2.2 MySQL特性 10
2.3 MySQL服务器的安装与配置 11
2.3.1 下载MySQL 11
2.3.2 MySQL环境的安装 13
2.3.3 启动、连接、断开和停止MySQL服务器 20
小结 23
上机指导 24
习题 25
第3章 MySQL数据库管理 26
3.1 创建数据库 27
3.1.1 通过CREATE DATABASE语句创建数据库 27
实例:创建图书馆管理系统数据库
3.1.2 通过CREATE SCHEMA语句创建数据库 27
实例:通过CREATE SCHEMA语句创建名称为db_library1的数据库
3.1.3 创建指定字符集的数据库 28
实例:创建使用GBK字符集的数据库
3.1.4 创建数据库前判断是否存在同名数据库 28
实例:创建图书馆管理系统数据库前判断是否存在同名数据库
3.2 查看数据库 29
实例:查看服务器中的所有数据库
3.3 选择数据库 29
实例:设置默认的数据库
3.4 修改数据库 30
实例:修改数据库使用的字符集
3.5 删除数据库 31
实例:删除3.1.4节创建的数据库
3.6 数据库存储引擎的应用 31
3.6.1 查询MySQL中支持的存储引擎 31
实例:查询默认的存储引擎
3.6.2 InnoDB存储引擎 33
3.6.3 MyISAM存储引擎 34
3.6.4 MEMORY存储引擎 34
3.6.5 如何选择存储引擎 35
小结 36
上机指导 36
习题 37
第1章 数据库设计概述 1
1.1 数据库概述 2
1.1.1 数据库与数据库管理系统 2
1.1.2 数据模型 3
1.1.3 结构化查询语言SQL 3
1.2 数据库的体系结构 3
1.2.1 数据库三级模式结构 3
1.2.2 三级模式之间的映射 4
1.3 E-R图 4
1.3.1 实体和属性 4
实例:设计图书馆管理系统的图书实体图
1.3.2 关系 5
1.3.3 E-R图的设计原则 5
实例:设计图书馆管理系统的E-R图
1.4 数据库设计 6
1.4.1 为实体建立数据表 6
实例:根据图书实体建立图书数据表
1.4.2 为表建立主键或外键 7
1.4.3 为字段选择合适的数据类型 7
1.4.4 定义约束条件 8
小结 8
习题 8
第2章 MySQL概述 9
2.1 为什么选择MySQL数据库 10
2.1.1 什么是MySQL数据库 10
2.1.2 MySQL的优势 10
2.1.3 MySQL的发展史 10
2.2 MySQL特性 10
2.3 MySQL服务器的安装与配置 11
2.3.1 下载MySQL 11
2.3.2 MySQL环境的安装 13
2.3.3 启动、连接、断开和停止MySQL服务器 20
小结 23
上机指导 24
习题 25
第3章 MySQL数据库管理 26
3.1 创建数据库 27
3.1.1 通过CREATE DATABASE语句创建数据库 27
实例:创建图书馆管理系统数据库
3.1.2 通过CREATE SCHEMA语句创建数据库 27
实例:通过CREATE SCHEMA语句创建名称为db_library1的数据库
3.1.3 创建指定字符集的数据库 28
实例:创建使用GBK字符集的数据库
3.1.4 创建数据库前判断是否存在同名数据库 28
实例:创建图书馆管理系统数据库前判断是否存在同名数据库
3.2 查看数据库 29
实例:查看服务器中的所有数据库
3.3 选择数据库 29
实例:设置默认的数据库
3.4 修改数据库 30
实例:修改数据库使用的字符集
3.5 删除数据库 31
实例:删除3.1.4节创建的数据库
3.6 数据库存储引擎的应用 31
3.6.1 查询MySQL中支持的存储引擎 31
实例:查询默认的存储引擎
3.6.2 InnoDB存储引擎 33
3.6.3 MyISAM存储引擎 34
3.6.4 MEMORY存储引擎 34
3.6.5 如何选择存储引擎 35
小结 36
上机指导 36
习题 37
第4章 MySQL表结构管理 38
4.1 MySQL数据类型 39
4.1.1 数字类型 39
4.1.2 字符串类型 40
4.1.3 日期和时间数据类型 41
4.2 创建表 41
实例:创建图书馆管理系统的图书信息表
4.2.1 设置默认的存储引擎 43
实例:为图书类型表设置使用MyISAM存储引擎
4.2.2 设置自增类型字段 44
实例:为图书类型表设置自动编号
4.2.3 设置字符集 45
4.2.4 复制表结构 45
实例:为图书信息表建立副本
4.3 修改表结构 48
4.3.1 修改字段 48
实例:在图书信息表的副本中添加一个新的字段
4.3.2 修改约束条件 49
4.3.3 修改表的其他选项 50
4.3.4 修改表名 50
实例:修改图书信息表的副本为tb_books
4.4 删除表 51
实例:删除图书信息表的副本
4.5 设置索引 51
4.5.1 索引概述 51
4.5.2 创建索引 52
实例:创建考生成绩表并设置索引
实例:为图书信息表的书名字段设置索引
4.5.3 删除索引 55
实例:删除图书信息表的书名字段的索引
4.6 定义约束 56
4.6.1 定义主键约束 56
实例:创建图书馆管理系统的管理员信息表并将id字段设置为主键约束
实例:创建学生信息表并将学号和班级号设置为主键约束
4.6.2 定义候选键约束 57
实例:将图书信息表的书名字段设置为候选键约束
4.6.3 定义非空约束 58
实例:创建图书馆管理系统的管理员信息表,并为其设置非空约束
4.6.4 定义CHECK约束 58
实例:创建学生信息表,限制其age字段的值只能是7~18(不包括18)的数
实例:创建图书信息表,限制其typeid字段的值只能是类别表的id字段的值
小结 60
上机指导 60
习题 61
第5章 表记录的更新操作 62
5.1 插入表记录 63
5.1.1 使用INSERT…VALUES语句插入新记录 63
实例:向图书馆管理系统的管理员信息表中插入一条新记录
实例:向管理员信息表中插入记录的一部分
5.1.2 插入多条记录 65
实例:向管理员信息表中批量插入3条新记录
5.1.3 使用INSERT…SELECT语句插入结果集 66
实例:从图书馆管理系统的借阅表中获取部分借阅信息插入到归还表中
5.1.4 使用REPLACE语句插入新记录 68
5.2 修改表记录 69
实例:将图书馆管理系统的借阅表中的是否归还字段值设置为1
5.3 删除表记录 70
5.3.1 使用DELETE语句删除表记录 70
实例:将图书馆管理系统的管理员信息表中的名称为admin的管理员删除
5.3.2 使用TRUNCATE语句清空表记录 71
实例:清空图书馆管理系统的管理员信息表
小结 71
上机指导 72
习题 72
第6章 表记录的检索 73
6.1 基本查询语句 74
6.2 单表查询 75
6.2.1 查询所有字段 76
实例:查询图书馆管理系统的图书信息表的全部数据
6.2.2 查询指定字段 76
实例:从图书馆管理系统的图书信息表中查询图书的名称和作者
6.2.3 查询指定数据 76
实例:从图书馆管理系统的管理表中查询名称为mr的管理员
6.2.4 带IN关键字的查询 77
实例:从图书馆管理系统的图书表中查询位于左A-1或右A-1的图书信息
6.2.5 带BETWEEN AND的范围查询 78
实例:从图书馆管理系统的借阅表中查询指定时间段内的借阅信息
6.2.6 带LIKE的字符匹配查询 78
实例:对图书馆管理系统的图书信息进行模糊查询
6.2.7 用IS NULL关键字查询空值 79
实例:查询图书馆管理系统的读者类型表中name字段为空的记录
6.2.8 带AND的多条件查询 79
实例:判断输入的管理员账号和密码是否存在
6.2.9 带OR的多条件查询 80
实例:查询图书馆管理系统的管理员表中名称为mr或者mingrisoft的记录
6.2.10 用DISTINCT关键字去除结果中的重复行 80
实例:从图书馆管理系统的读者信息表中获取职业
6.2.11 用ORDER BY关键字对查询结果排序 81
实例:对图书借阅信息进行排序
6.2.12 用GROUP BY关键字分组查询 81
实例:分组统计每本图书的借阅次数(3例)
6.2.13 用LIMIT限制查询结果的数量 83
实例:查询最后被借阅的3本图书
实例:查询从编号2开始的3条记录
6.3 聚合函数查询 83
6.3.1 COUNT()函数 83
实例:统计图书馆管理系统中的读者人数
6.3.2 SUM()函数 84
实例:统计商品的销售金额
6.3.3 AVG()函数 84
实例:计算学生的平均成绩
6.3.4 MAX()函数 85
实例:计算学生表中的最高成绩
6.3.5 MIN()函数 86
实例:计算学生表中的最低成绩
6.4 连接查询 86
6.4.1 内连接查询 86
实例:使用内连接查询出图书的借阅信息
6.4.2 外连接查询 88
实例:使用左外连接获取图书的最多借阅天数
实例:使用右外连接获取图书的最多借阅天数
6.4.3 复合条件连接查询 89
实例:查询出未归还的图书借阅信息
6.5 子查询 90
6.5.1 带IN关键字的子查询 90
实例:查询被借阅过的图书信息
6.5.2 带比较运算符的子查询 91
实例:查询考试成绩为优秀的学生信息
6.5.3 带EXISTS关键字的子查询 92
实例:查询已经被借阅的图书信息
6.5.4 带ANY关键字的子查询 93
实例:查询比一年三班最低分高的全部学生信息
6.5.5 带ALL关键字的子查询 94
实例:查询比一年三班最高分高的全部学生信息
6.6 合并查询结果 95
实例:将图书信息表1和图书信息表2合并(2例)
6.7 定义表和字段的别名 96
6.7.1 为表取别名 96
实例:使用左连接查询出图书的完整信息,并为表指定别名
6.7.2 为字段取别名 96
实例:统计每本图书的借阅次数,并取别名为degree
6.8 使用正则表达式查询 97
6.8.1 匹配指定字符中的任意一个 98
实例:在图书馆管理系统中查询包括字母k、r或s的管理员信息
6.8.2 使用“*”和“+”来匹配多个字符 99
实例:在图书馆管理系统中查询E-mail地址不正确的读者信息
小结 100
上机指导 100
习题 101
第7章 视图 102
7.1 视图概述 103
7.1.1 视图的概念 103
7.1.2 视图的作用 103
7.2 创建视图 104
7.2.1 查看创建视图的权限 104
实例:查看用户是否具有创建视图的权限
7.2.2 创建视图 104
实例:创建保存完整图书信息的视图
7.2.3 创建视图的注意事项 106
7.3 视图操作 106
7.3.1 查看视图 106
实例:查看图书视图的结构
实例:查看图书视图的详细定义
7.3.2 修改视图 108
实例:修改图书视图的结构
实例:使用ALTER语句修改图书视图的结构
7.3.3 更新视图 110
实例:更新图书视图中的数据
7.3.4 删除视图 112
实例:删除已经创建的图书视图
小结 113
上机指导 113
习题 114
第8章 触发器 115
8.1 MySQL触发器 116
8.1.1 创建MySQL触发器 116
实例:保存图书信息时,自动向日志表添加一条数据
8.1.2 创建具有多个执行语句的触发器 117
实例:删除图书信息时,分别向日志表和临时表中各添加一条数据
8.2 查看触发器 119
8.2.1 SHOW TRIGGERS 119
8.2.2 查看triggers表中的触发器信息 120
8.3 使用触发器 120
8.3.1 触发器的执行顺序 121
实例:触发器与表操作的执行顺序
8.3.2 使用触发器维护冗余数据 122
实例:使用触发器维护库存数量
8.4 删除触发器 123
实例:删除指定名称的触发器
小结 124
上机指导 124
习题 125
第9章 存储过程与存储函数 126
9.1 创建存储过程与存储函数 127
9.1.1 创建存储过程 127
实例:创建一个统计指定图书借阅次数的存储过程
9.1.2 创建存储函数 129
实例:创建一个统计图书借阅次数的存储函数
9.1.3 变量的应用 130
实例:演示局部变量的有效范围
实例:会话(全局)变量的举例
9.1.4 光标的运用 133
9.2 存储过程和存储函数的调用 134
9.2.1 调用存储过程 134
实例:调用统计图书借阅次数的存储过程
9.2.2 调用存储函数 135
实例:调用统计图书借阅次数的存储函数
9.3 查看存储过程和函数 136
9.3.1 SHOW STATUS语句 136
9.3.2 SHOW CREATE语句 136
实例:查询指定名称的存储过程
9.4 修改存储过程和函数 137
实例:修改存储过程
9.5 删除存储过程和函数 138
实例:删除统计图书借阅次数的存储过程
实例:删除统计图书借阅次数的存储函数
小结 138
上机指导 139
习题 140
第10章 备份与恢复 141
10.1 数据备份 142
10.1.1 使用mysqldump命令备份 142
实例:备份图书馆管理系统的数据库
实例:备份db_library和db_library_gbk数据库
实例:备份所有数据库
10.1.2 直接复制整个数据库目录 145
10.1.3 使用mysqlhotcopy工具快速备份 145
10.2 数据恢复 146
10.2.1 使用mysql命令还原 146
实例:还原已经备份的图书馆管理系统的数据库
10.2.2 直接复制到数据库目录 147
10.3 数据库迁移 147
10.3.1 MySQL数据库之间的迁移 147
10.3.2 不同数据库之间的迁移 148
10.4 表的导出和导入 148
10.4.1 用SELECT…INTO OUTFILE导出文本文件 148
实例:使用SELECT…INTO OUTFILE导出图书馆管理系统的图书表的记录
10.4.2 用mysqldump命令导出文本文件 150
实例:使用mysqldump命令导出图书馆管理系统的图书表的记录
10.4.3 用mysql命令导出文本文件 152
实例:使用mysql命令导出图书馆管理系统的图书表的记录
小结 153
上机指导 153
习题 155
第11章 MySQL性能优化 156
11.1 优化概述 157
11.1.1 分析MySQL数据库的性能 157
11.1.2 通过profile工具分析语句消耗的性能 157
11.2 优化查询 158
11.2.1 分析查询语句 159
实例:使用EXPLAIN语句分析一个查询语句
11.2.2 索引对查询速度的影响 160
实例:举例分析索引对查询速度的影响
11.2.3 使用索引查询 161
实例:举例分析应用LIKE关键字优化索引查询
实例:通过EXPLAIN分析使用OR关键字的查询
11.3 优化数据库结构 162
11.3.1 将字段很多的表分解成多个表 163
实例:将学生表分解为学生表和备注表
11.3.2 增加中间表 163
实例:创建包含学生表常用信息表中间表
11.3.3 优化插入记录的速度 164
11.3.4 分析表、检查表和优化表 165
11.4 优化多表查询 166
实例:演示优化多表查询
11.5 优化表设计 167
小结 168
上机指导 168
习题 169
第12章 事务与锁机制 170
12.1 事务机制 171
12.1.1 事务的概念 171
12.1.2 事务机制的必要性 171
实例:模拟银行转账验证事务的必要性
12.1.3 关闭MySQL自动提交 173
12.1.4 事务回滚 174
实例:演示事务回滚
12.1.5 事务提交 175
12.1.6 MySQL中的事务 176
实例:实现出错时回滚否则提交事务
12.1.7 回退点 178
实例:应用回退点实现部分撤销
12.2 锁机制 179
12.2.1 MySQL锁机制的基本知识 180
12.2.2 MyISAM表的表级锁 181
实例:以读方式锁定用户数据表
实例:以写方式锁定用户表
12.2.3 InnoDB表的行级锁 184
实例:通过事务实现延长行级锁的生命周期
12.2.4 死锁的概念与避免 186
12.3 事务的隔离级别 186
12.3.1 事务的隔离级别与并发问题 186
12.3.2 设置事务的隔离级别 187
小结 187
上机指导 188
习题 190
第13章 综合开发案例——图书馆管理系统 191
13.1 开发背景 192
13.2 系统分析 192
13.2.1 需求分析 192
13.2.2 可行性研究 192
13.3 JSP预备知识 193
13.3.1 JSP概述 193
13.3.2 JSP的开发及运行环境 194
13.3.3 JSP页面的基本构成 195
13.4 系统设计 195
13.4.1 系统目标 195
13.4.2 系统功能结构 196
13.4.3 系统流程图 196
13.4.4 开发环境 197
13.4.5 文件夹组织结构 197
13.5 系统预览 197
13.6 数据库设计 199
13.6.1 实体图设计 199
13.6.2 E-R图设计 201
13.6.3 数据库逻辑结构设计 201
13.7 公共模块设计 204
13.7.1 数据库连接及操作类的编写 205
13.7.2 字符串处理类的编写 207
13.7.3 配置解决中文乱码的过滤器 207
13.8 主界面设计 208
13.8.1 主界面概述 208
13.8.2 主界面的实现过程 209
13.9 管理员模块设计 210
13.9.1 管理员模块概述 210
13.9.2 编写管理员模块的实体类和Servlet控制类 210
13.9.3 系统登录的实现过程 212
13.9.4 查看管理员的实现过程 215
13.9.5 添加管理员的实现过程 218
13.9.6 设置管理员权限的实现过程 221
13.9.7 删除管理员的实现过程 224
13.10 图书借还模块设计 225
13.10.1 图书借还模块概述 225
13.10.2 编写图书借还模块的实体类和Servlet控制类 226
13.10.3 图书借阅的实现过程 227
13.10.4 图书续借的实现过程 231
13.10.5 图书归还的实现过程 234
13.10.6 图书借阅查询的实现过程 235
小结 239
附录 实验 240
实验1:安装MySQL数据库 241
实验2:创建数据库并指定使用的字符集 241
实验3:创建和修改数据表 243
实验4:使用SQL语句插入和更新记录 244
实验5:为表创建索引 246
实验6:创建并使用约束 247
实验7:模糊查询数据 249
实验8:查询和汇总数据库的数据 250
实验9:创建视图 251
实验10:创建触发器 252
实验11:创建和使用存储过程 254
实验12:备份和恢复数据库 255