第 1章 MySQL概述与安装 1
1.1 存储数据方式演变 1
1.2 MySQL简介 1
1.2.1 关系型数据库管理系统 1
1.2.2 MySQL的优势 2
1.3 MySQL的安装、启动和关闭 3
1.3.1 MySQL的安装 3
1.3.2 MySQL的启动和关闭 13
第 2章 MySQL初体验 18
2.1 客户端/服务器架构 18
2.2 bin目录下的可执行文件 19
2.2.1 在命令行解释器中执行可执行文件 20
2.2.2 服务器程序和客户端程序 27
2.2.3 连接注意事项 31
2.3 MySQL语句使用注意事项 32
第3章 MySQL数据类型 35
3.1 数值类型 35
3.1.1 整数类型 35
3.1.2 浮点数类型 38
3.1.3 定点数类型 39
3.2 日期和时间类型 42
3.2.1 YEAR 44
3.2.2 DATE、TIME和DATETIME 44
3.2.3 TIMESTAMP 44
3.3 字符串类型 45
3.3.1 字符和字符串 45
3.3.2 字符编码简介 45
3.3.3 MySQL的字符串类型 46
3.3.4 ENUM类型和SET类型 49
3.4 二进制类型 50
3.4.1 BIT类型 50
3.4.2 BINARY(M)与VARBINARY(M) 50
3.4.3 BLOB类型 50
第4章 数据库的基本操作 51
4.1 展示数据库 51
4.2 创建数据库 52
4.3 切换默认数据库 53
4.4 删除数据库 54
第5章 表的基本操作 55
5.1 展示数据库中的表 55
5.2 创建表 55
5.2.1 基本语法 55
5.2.2 为建表语句添加注释 56
5.2.3 创建现实生活中的表 57
5.2.4 IF NOT EXISTS 58
5.3 删除表 59
5.4 查看表结构 60
5.5 直接使用某个数据库中的某个表 61
5.6 修改表 62
5.6.1 修改表名 62
5.6.2 增加列 63
5.6.3 删除列 64
5.6.4 修改列信息 65
5.6.5 一条语句中包含多个修改操作 67
5.6.6 将first_table表恢复成原来的样子 67
第6章 列的属性 68
6.1 简单的查询和插入语句 68
6.1.1 简单的查询语句 68
6.1.2 简单插入语句 68
6.1.3 批量插入 69
6.2 列的属性 70
6.2.1 默认值 70
6.2.2 NOT NULL 71
6.2.3 主键 72
6.2.4 UNIQUE约束 73
6.2.5 主键和UNIQUE约束的对比 74
6.2.6 外键 75
6.2.7 AUTO_INCREMENT 75
6.2.8 列的注释 77
6.2.9 显示宽度与ZEROFILL 77
6.3 查看表结构时的列属性 80
6.4 标识符的命名 80
第7章 简单查询 82
7.1 准备工作 82
7.1.1 用哪个表 82
7.1.2 为表填入数据 83
7.2 查询单个列 84
7.3 查询多个列 85
7.4 查询所有列 86
7.5 查询结果去重 86
7.5.1 去除单列的重复结果 86
7.5.2 去除多列的重复结果 87
7.6 限制结果集记录条数 88
7.7 对查询结果排序 89
7.7.1 按照单个列的值进行排序 89
7.7.2 按照多个列的值进行排序 90
第8章 带搜索条件的查询 92
8.1 简单搜索条件 92
8.2 匹配列表中的元素 94
8.3 匹配NULL 95
8.4 多个搜索条件 95
8.4.1 AND运算符 96
8.4.2 OR运算符 96
8.4.3 更复杂的搜索条件的组合 96
8.5 通配符 97
第9章 表达式和函数 100
9.1 表达式 100
9.1.1 操作数 100
9.1.2 运算符 101
9.1.3 表达式的使用 102
9.1.4 表达式中的NULL 105
9.2 函数 106
9.2.1 字符串处理函数 106
9.2.2 日期和时间处理函数 107
9.2.3 数值处理函数 110
9.2.4 流程控制表达式和函数 111
9.2.5 汇总函数 114
9.3 隐式类型转换 117
第 10章 分组查询 121
10.1 分组数据 121
10.1.1 复杂的数据统计 121
10.1.2 创建分组 121
10.1.3 带有WHERE子句的分组查询 123
10.1.4 作用于分组的过滤条件 124
10.1.5 分组和排序 125
10.1.6 多个分组列 126
10.1.7 使用分组查询其他注意事项 127
10.2 简单查询语句中各子句的顺序 128
第 11章 子查询 129
11.1 多表查询的需求 129
11.2 标量子查询 129
11.3 列子查询 130
11.4 行子查询 131
11.5 表子查询 132
11.6 EXISTS和NOT EXISTS子查询 132
11.7 不相关子查询和相关子查询 133
11.8 对同一个表的子查询 134
第 12章 连接查询 136
12.1 再次认识关系表 136
12.2 连接的概念 137
12.3 连接查询过滤条件 139
12.4 内连接和外连接 141
12.4.1 连接语法 142
12.4.2 内连接的语法 143
12.4.3 小结 144
12.5 多表连接 145
12.6 表的别名 146
12.7 自连接 147
12.8 连接查询与子查询的转换 148
第 13章 并集查询 149
13.1 涉及单表的并集查询 149
13.2 涉及不同表的并集查询 150
13.3 包含或去除重复的行 151
13.4 并集查询中的ORDER BY和LIMIT子句 152
第 14章 数据的插入、删除和更新 154
14.1 准备工作 154
14.2 插入数据 154
14.2.1 插入完整的记录 154
14.2.2 插入记录的一部分 156
14.2.3 批量插入记录 156
14.2.4 将某个查询的结果集插入表中 157
14.2.5 INSERT IGNORE 158
14.2.6 INSERT ... ON DUPLICATEKEY UPDATE 159
14.3 删除数据 161
14.4 更新数据 162
第 15章 视图 164
15.1 创建视图 164
15.2 使用视图 164
15.2.1 利用视图来创建新视图 166
15.2.2 创建视图时指定自定义列名 166
15.3 查看和删除视图 167
15.3.1 查看有哪些视图 167
15.3.2 查看视图的定义 167
15.4 可更新的视图 168
第 16章 存储程序 170
16.1 用户自定义变量 170
16.2 存储函数 172
16.2.1 创建存储函数 172
16.2.2 存储函数的调用 174
16.2.3 查看和删除存储函数 175
16.2.4 函数体的定义 176
16.3 存储过程 183
16.3.1 创建存储过程 183
16.3.2 存储过程的调用 183
16.3.3 查看和删除存储过程 184
16.3.4 存储过程中的语句 184
16.3.5 存储过程的参数前缀 185
16.3.6 存储过程和存储函数的不同点 188
16.4 游标简介 188
16.4.1 创建游标 189
16.4.2 打开和关闭游标 190
16.4.3 通过游标获取记录 190
16.4.4 遍历结束时的执行策略 192
16.5 触发器 194
16.5.1 创建触发器 194
16.5.2 查看和删除触发器 196
16.5.3 触发器使用注意事项 196
16.6 事件 197
16.6.1 创建事件 197
16.6.2 查看和删除事件 199
第 17章 备份与恢复 200
17.1 mysqldump 200
17.1.1 使用mysqldump备份数据 200
17.1.2 使用SOURCE语句恢复数据 202
17.2 以文本形式导出或导入 203
17.3 导入数据 204
第 18章 用户与权限 206
18.1 用户管理 206
18.1.1 创建用户 206
18.1.2 修改密码 208
18.1.3 删除用户 208
18.2 权限管理 208
18.2.1 授予权限 208
18.2.2 查看权限 211
18.2.3 移除权限 211
第 19章 应用程序连接MySQL服务器 213
19.1 JDBC规范 213
19.2 使用JDBC连接数据库的例子 213
19.3 执行更新和删除语句 216
19.4 使用PreparedStatement 217