第1章:使用mysql客户端程序 1
1.0 引言 1
1.1 建立MySQL用户账号 2
1.2 创建数据库和样表 4
1.3 启动和停止mysql 6
1.4 使用可选项文件来指定连接参数 8
1.5 保护选项文件以阻止其他用户读取 10
1.6 混合使用命令行和选项文件参数 11
1.7 找不到mysql时该怎么做 12
1.8 发起SQL语句 13
1.9 取消一条部分输入的语句 14
1.10 重复和编辑SQL语句 15
1.11 自动完成数据库名和表名 16
1.12 让mysql从文件中读取语句 17
1.13 让mysql从其他程序读取语句 20
1.14 一行输入SQL 21
1.15 使用拷贝粘贴作为mysql输入源 22
1.16 预防查询输出超出屏幕范围 22
1.17 发送查询输出到文件或程序 24
1.18 选择表格或制表符定界的查询输出格式 25
1.19 指定任意的输出列分隔符 26
1.20 生成HTML或XML输出 27
1.21 在查询输出中禁止列头部 29
1.22 使长输出行更具可读性 30
1.23 控制mysql的繁冗级别 31
1.24 记录交互式的mysql会话 32
1.25 以之前执行的语句创建mysql脚本 33
1.26 在SQL语句中使用用户自定义的变量 33
1.27 为查询输出行计数 36
1.28 将mysql用作计算器 37
1.29 在Shell脚本中使用mysql 38
第2章:编写基于MySQL的程序 45
2.0 引言 45
2.1 连接、选择数据库及断开连接 50
2.2 查错 64
2.3 编写库文件 72
2.4 发起语句并检索结果 85
2.5 处理语句中的特殊字符和NULL值 100
2.6 处理标识符中特殊字符 112
2.7 识别结果集中的NULL值 113
2.8 获取连接参数的技术 117
2.9 结论和建议 129
第3章:从表中查询数据 131
3.0 引言 131
3.1 指定查询列/从指定列中查询 133
3.2 指定查询行 134
3.3 格式化显示查询结果 135
3.4 使用列别名来简化程序 138
3.5 合并多列来构建复合值 139
3.6 Where表达式中的列别名 140
3.7 调试比较表达式 141
3.8 使查询结果唯一化 142
3.9 如何处理NULL值 143
3.10 在用户程序中使用NULL作为比较参数 145
3.11 结果集排序 146
3.12 使用视图来简化查询 148
3.13 多表查询 149
3.14 从查询结果集头或尾取出部分行 151
3.15 在结果集中间选取部分行 153
3.16 选择合适的LIMIT参数 155
3.17 当LIMIT需要“错误”的排列顺序时做什么 158
3.18 从表达式中计算LIMIT值 159
第4章:表管理 161
4.0 引言 161
4.1 克隆表 161
4.2 将查询结果保存到表中 162
4.3 使用临时表 165
4.4 检查或改变某个表的存储引擎 167
4.5 生成唯一的表名 168
第5章:与字符串共舞 171
5.0 引言 171
5.1 字符串属性 172
5.2 选择字符串的数据类型 175
5.3 正确设置客户端连接的字符集 178
5.4 串字母 179
5.5 检查一个字符串的字符集或字符排序 182
5.6 改变字符串的字符集或字符排序 183
5.7 更改字符串字母的大小写 185
5.8 更改字符串大小写失败的情况 186
5.9 控制字符串比较中的大小写敏感 188
5.10 使用SQL模式进行模式匹配 191
5.11 使用正则表达式进行模式匹配 194
5.12 模式匹配中的大小写问题 198
5.13 分割或者串联字符串 200
5.14 查询子串 203
5.15 使用FULLTEXT查询 203
5.16 用短语来进行FULLTEXT查询 208
5.17 要求或禁止FULLTEXT搜索单词 209
5.18 用FULLTEXT索引来执行词组查询 211
第6章:使用日期和时间 213
6.0 引言 213
6.1 选择合适的日期或者时间变量类型 214
6.2 修改MySQL中的日期格式 216
6.3 设置客户端时区 220
6.4 获取当前日期或时间 222
6.5 使用TIMESTAMP来跟踪行修改时间 223
6.6 从日期或者时间值中分解出各部分值 226
6.7 合成日期或者时间值 232
6.8 在时间数据类型和基本单位间进行转换 234
6.9 计算两个日期或时间之间的间隔 238
6.10 增加日期或时间值 243
6.11 计算年龄 248
6.12 将一个日期和时间值切换到另一个时区 253
6.13 找出每月的第一天,最后一天或者天数 254
6.14 通过子串替换来计算日期 257
6.15 计算某个日期为星期几 258
6.16 查出给定某周的某天的日期 259
6.17 执行闰年计算 262
6.18 接近但不是ISO格式的日期格式 265
6.19 将日期或时间当成数值 266
6.20 强制MySQL将字符串当作时间值 268
6.21 基于时间特性来查询行 269
第7章:排序查询结果 273
7.0 引言 273
7.1 使用ORDER BY命令排序查询结果 274
7.2 使用表达式排序 278
7.3 显示一组按照其他属性排序的值 280
7.4 字符串排序的大小写区分控制 283
7.5 基于日期的排序 286
7.6 按日历排序 288
7.7 按周历排序 290
7.8 按时钟排序 291
7.9 按数据列的子串排序 292
7.10 按固定长度的子串排序 293
7.11 按可变长度的子串排序 295
7.12 按域名顺序排列主机名 300
7.13 按照数字顺序排序点分式IP地址 302
7.14 将数值移动到排序结果的头部或尾部 304
7.15 按照用户定义排序 308
7.16 排序枚举数值 309
第8章:生成摘要 313
8.0 引言 313
8.1 使用COUNT函数生成摘要 315
8.2 使用MIN()和MAX()函数生成摘要 318
8.3 使用SUM()和AVG()函数生成摘要 319
8.4 使用DISTINCT函数消除重复 321
8.5 查找数值相关的最大值和最小值 323
8.6 控制MIN()函数和MAX()函数的字符串大小写区分 325
8.7 将摘要划分为子群 327
8.8 摘要与空值 330
8.9 使用确定的特性选择组群 333
8.10 使用计数确定数值是否唯一 334
8.11 使用表达式结果分组 335
8.12 分类无类别数据 336
8.13 控制摘要显示顺序 340
8.14 查找最小或最大的摘要数值 342
8.15 基于日期的摘要 344
8.16 同时使用每一组的摘要和全体的摘要 346
8.17 生成包括摘要和列表的报告 349
第9章:获取和使用元数据 353
9.0 引言 353
9.1 获取受语句影响的数据行数目 355
9.2 获取设置元数据的结果 357
9.3 确定一条语句是否生成了结果集 367
9.4 使用元数据来格式化查询输出 368
9.5 列举或检查数据库或表的扩展 372
9.6 访问表数据列定义 374
9.7 取得ENUM和SET数据列信息 381
9.8 在应用程序中使用表结构信息 383
9.9 获取服务器元数据 388
9.10 编写适合MySQL服务器版本的应用程序 389
9.11 确定默认数据库 390
9.12 监测MySQL服务器 391
9.13 确定服务器支持哪个存储引擎 393
第10章:数据导入导出 395
10.0 引言 395
10.1 使用LOAD DATA和mysqlimport导入数据 399
10.2 指定数据文件位置 401
10.3 指定数据文件的结构 403
10.4 处理引号和特殊字符 405
10.5 导入CSV文件 406
10.6 读取不同操作系统的文件 407
10.7 处理重复的键值 408
10.8 获取关于错误输入数据的诊断信息 408
10.9 跳过数据文件行 410
10.10 指定输入列顺序 411
10.11 在插入输入值之前对数据文件进行预处理 412
10.12 忽略数据文件列 413
10.13 从MySQL中导出查询结果 415
10.14 将表导出为文本文件 417
10.15 以SQL格式导出表内容或定义 418
10.16 将表或数据库拷贝到另一个服务器 420
10.17 编写你自己的导出程序 422
10.18 将数据文件从一种格式转化为另一种格式 426
10.19 提取和重排数据文件列 427
10.20 使用SQL模式来控制错误的输入数据处理 430
10.21 验证并转换数据 432
10.22 使用模式匹配来验证数据 435
10.23 使用模式来匹配广泛的内容类型 438
10.24 使用模式来匹配数值 439
10.25 使用模式来匹配日期或时间 441
10.26 使用模式来匹配E-mail地址或URL 445
10.27 使用表元数据来验证数据 446
10.28 使用一个查找表来验证数据 449
10.29 将两个数字的年份值转化为四位形式 452
10.30 验证日期和时间合法性 453
10.31 编写时间处理工具 456
10.32 使用不完整的日期 461
10.33 导入非ISO格式日期值 462
10.34 使用非ISO格式导出日期值 463
10.35 导入和导出NULL值 464
10.36 根据数据文件猜测表结构 466
10.37 在MySQL和Access之间交换数据 469
10.38 在MySQL和Microsoft Excel之间交换数据 470
10.39 将输出结果导出为XML 472
10.40 将XML导入MySQL 476
10.41 尾声 478
第11章:生成和使用序列 481
11.0 引言 481
11.1 创建一个序列列并生成序列值 482
11.2 为序列列选择数据类型 485
11.3 序列生成的行删除的效果 487
11.4 查询序列值 490
11.5 对一个已有的序列进行重新计数 494
11.6 扩展序列列的取值范围 496
11.7 序列顶部数值的再使用 497
11.8 确保各行按照给定顺序重编号 498
11.9 从某个特定值开始一个序列 499
11.10 序列化一个未序列的表 500
11.11 使用AUTO_INCREMENT栏来创建多重序列 502
11.12 管理多重并发AUTO_INCREMENT数值 507
11.13 使用AUTO_INCREMENT值将表进行关联 508
11.14 将序列生成器用作计数器 511
11.15 创建循环序列 514
11.16 按行顺序输出数列查询 516
第12章:使用多重表 517
12.0 引言 517
12.1 在表中找到与另一个表中的行相匹配的行 518
12.2 查找与其他表不匹配的行 526
12.3 将表与自身进行比较 531
12.4 产生主从列表和摘要 536
12.5 枚举多对多的关系 539
12.6 查找每组行中含有最大或最小值的行 544
12.7 计算队伍排名 548
12.8 使用连接补全或识别列表的缺口 554
12.9 计算连续行的差值 559
12.10 发现累积和与动态均值 561
12.11 使用连接控制查询输出的顺序 565
12.12 在单个查询中整合几个结果集 567
12.13 识别并删除失配或独立行 572
12.14 为不同数据库间的表执行连接 575
12.15 同时使用不同的MySQL服务器 576
12.16 在程序中引用连接的输出列名称 579
第13章:统计技术 583
13.0 引言 583
13.1 计算描述统计 584
13.2 分组描述统计 587
13.3 产生频率分布 589
13.4 计数缺失值 592
13.5 计算线性回归和相关系数 594
13.6 生成随机数 596
13.7 随机化行集合 598
13.8 从行集合中随机选择条目 601
13.9 分配等级 602
第14章:处理重复项 607
14.0 引言 607
14.1 防止在表中发生重复 608
14.2 处理向表中装载行时出现的重复错误 610
14.3 计数和识别重复项 614
14.4 从表中消除重复项 618
14.5 从自连接的结果中消除重复 622
第15章:执行事务 627
15.0 引言 627
15.1 使用事务存储引擎 628
15.2 使用SQL执行事务 630
15.3 在程序中执行事务 631
15.4 在Perl程序中使用事务 634
15.5 在Ruby程序中使用事务 636
15.6 在PHP程序中使用事务 637
15.7 在Python程序中使用事务 638
15.8 在Java程序中使用事务 639
15.9 使用事务的替代方法 640
第16章:使用存储例程、触发器和事件 643
16.0 引言 643
16.1 创建复合语句对象 645
16.2 使用存储函数封装计算 647
16.3 使用存储过程来“返回”多个值 649
16.4 用触发器来定义动态的默认列值 650
16.5 为其他日期和时间类型模拟TIMESTAMP属性 653
16.6 使用触发器记录表的变化 655
16.7 使用事件调度数据库动作 658
第17章:关于Web应用中MySQL的介绍 661
17.0 引言 661
17.1 Web页面产生的基本原则 663
17.2 使用Apache运行Web脚本 667
17.3 使用Tomcat运行Web脚本 678
17.4 在Web输出中编码特殊字符 688
第18章:在Web页面中混合查询结果 697
18.0 引言 697
18.1 以段落文本显示查询结果 698
18.2 以列表形式显示查询结果 700
18.3 以表格形式显示查询结果 712
18.4 将查询结果显示为超链接 717
18.5 根据数据库内容中创建导航索引 721
18.6 存储图片或其他二进制数据 726
18.7 检索图片或其他二进制数据 733
18.8 提供标语广告 736
18.9 提供可下载的查询结果 738
18.10 使用模板系统生成Web页面 741
第19章:用MySQL处理Web输入 761
19.0 引言 761
19.1 编写脚本生成Web表单 764
19.2 根据数据库内容构建单取表单元素 767
19.3 根据数据库内容构建多取表单元素 783
19.4 将一条数据库记录导入表单 788
19.5 收集Web输入 793
19.6 验证Web输入 804
19.7 将Web输入存入数据库 805
19.8 处理文件上传 808
19.9 执行搜索并显示结果 815
19.10 生成上一页和下一页链接 818
19.11 生成点击排序的表格头单元 822
19.12 Web页面访问计数 827
19.13 Web页面访问日志 831
19.14 使用MySQL存储Apache日志 833
第20章:使用基于MySQL的Web会话管理 841
20.0 引言 841
20.1 在Perl应用程序中使用基于MySQL的会话 845
20.2 在Ruby应用程序中使用基于MySQL的存储 850
20.3 在PHP会话管理器中使用基于MySQL的存储 854
20.4 在Tomcat中为会话支持存储使用MySQL 865
附录A:获取MySQL软件 875
附录B:从命令行执行程序 881
附录C:JSP和Tomcat知识的初步内容 889
附录D:参考资料 917
索引 921