MySQL Cookbook中文版(第二版)
MySQL Cookbook中文版(第二版)
Paul DuBois
出版时间:2009年02月
针对日常的编程困境和数据操作的挑战,本书为各个层次的、没有时间和精力来从头解决MySQL问题的用户提供了大量简练、精辟的代码段和可用的示例,每节都阐述了代码应该如何工作及其原因所在,随着您阅读的深入,您的收获也会随之增加。
本书在目前仍然广为流行的MySQL 4.1的基础上加入了MySQL 5.0的内容及它强大的新特性。你将掌握用MySQL客户端程序执行SQL查询的方法,以及通过API编写与MySQL服务器交互程序的方法。书中有大量使用Perl、PHP、Python、Java甚至Ruby来检索并显示数据的新示例,还增加了子查询、视图、存储过程、触发器和事件等内容。
本书是很好的资源,提供了快速解决问题的方案及如下技巧:
* 同时访问多表数据
* 在两个表的行之间发现匹配或不匹配之处
* 将图片存入MySQL,并在Web页面中检索及显示它们
* 开启严格模式以阻止错误的数据被插入到你的数据库中
* 创建按照计划执行的数据库事件
本书并不想开发一个完整的复杂应用,相反,它帮你克服曾难倒你的问题,从而在开发应用中对你有所裨益。
Paul DuBois是MySQL在线参考手册的第一批贡献者之一,该手册是在20世纪90年代后期MySQL的开放年代支持管理员和开发者的一个文档项目。他已经撰写了多本关于MySQL的著作,包括MySQL Cookbook(第1版)。
对本书第1版的评价:
MySQL Cookbook是每个技术级别的MySQL开发者都应该拥有的参考书和教程。如果你正寻觅一本完备的MySQL参考书或一些帮助以提高你的技巧,这本书就是最好的选择。它引人入胜,并充满趣味性。
—J.T.Dyer, UnixReview,2003年3月
  1. 序言 I
  2. 第1章:使用mysql客户端程序 1
  3. 1.0 引言 1
  4. 1.1 建立MySQL用户账号 2
  5. 1.2 创建数据库和样表 4
  6. 1.3 启动和停止mysql 6
  7. 1.4 使用可选项文件来指定连接参数 8
  8. 1.5 保护选项文件以阻止其他用户读取 10
  9. 1.6 混合使用命令行和选项文件参数 11
  10. 1.7 找不到mysql时该怎么做 12
  11. 1.8 发起SQL语句 13
  12. 1.9 取消一条部分输入的语句 14
  13. 1.10 重复和编辑SQL语句 15
  14. 1.11 自动完成数据库名和表名 16
  15. 1.12 让mysql从文件中读取语句 17
  16. 1.13 让mysql从其他程序读取语句 20
  17. 1.14 一行输入SQL 21
  18. 1.15 使用拷贝粘贴作为mysql输入源 22
  19. 1.16 预防查询输出超出屏幕范围 22
  20. 1.17 发送查询输出到文件或程序 24
  21. 1.18 选择表格或制表符定界的查询输出格式 25
  22. 1.19 指定任意的输出列分隔符 26
  23. 1.20 生成HTML或XML输出 27
  24. 1.21 在查询输出中禁止列头部 29
  25. 1.22 使长输出行更具可读性 30
  26. 1.23 控制mysql的繁冗级别 31
  27. 1.24 记录交互式的mysql会话 32
  28. 1.25 以之前执行的语句创建mysql脚本 33
  29. 1.26 在SQL语句中使用用户自定义的变量 33
  30. 1.27 为查询输出行计数 36
  31. 1.28 将mysql用作计算器 37
  32. 1.29 在Shell脚本中使用mysql 38
  33. 第2章:编写基于MySQL的程序 45
  34. 2.0 引言 45
  35. 2.1 连接、选择数据库及断开连接 50
  36. 2.2 查错 64
  37. 2.3 编写库文件 72
  38. 2.4 发起语句并检索结果 85
  39. 2.5 处理语句中的特殊字符和NULL值 100
  40. 2.6 处理标识符中特殊字符 112
  41. 2.7 识别结果集中的NULL值 113
  42. 2.8 获取连接参数的技术 117
  43. 2.9 结论和建议 129
  44. 第3章:从表中查询数据 131
  45. 3.0 引言 131
  46. 3.1 指定查询列/从指定列中查询 133
  47. 3.2 指定查询行 134
  48. 3.3 格式化显示查询结果 135
  49. 3.4 使用列别名来简化程序 138
  50. 3.5 合并多列来构建复合值 139
  51. 3.6 Where表达式中的列别名 140
  52. 3.7 调试比较表达式 141
  53. 3.8 使查询结果唯一化 142
  54. 3.9 如何处理NULL 值 143
  55. 3.10 在用户程序中使用NULL作为比较参数 145
  56. 3.11 结果集排序 146
  57. 3.12 使用视图来简化查询 148
  58. 3.13 多表查询 149
  59. 3.14 从查询结果集头或尾取出部分行 151
  60. 3.15 在结果集中间选取部分行 153
  61. 3.16 选择合适的LIMIT参数 155
  62. 3.17 当LIMIT需要“错误”的排列顺序时做什么 158
  63. 3.18 从表达式中计算LIMIT值 159
  64. 第4章:表管理 161
  65. 4.0 引言 161
  66. 4.1 克隆表 161
  67. 4.2 将查询结果保存到表中 162
  68. 4.3 使用临时表 165
  69. 4.4 检查或改变某个表的存储引擎 167
  70. 4.5 生成唯一的表名 168
  71. 第5章:与字符串共舞 171
  72. 5.0 引言 171
  73. 5.1 字符串属性 172
  74. 5.2 选择字符串的数据类型 175
  75. 5.3 正确设置客户端连接的字符集 178
  76. 5.4 串字母 179
  77. 5.5 检查一个字符串的字符集或字符排序 182
  78. 5.6 改变字符串的字符集或字符排序 183
  79. 5.7 更改字符串字母的大小写 185
  80. 5.8 更改字符串大小写失败的情况 186
  81. 5.9 控制字符串比较中的大小写敏感 188
  82. 5.10 使用SQL模式进行模式匹配 191
  83. 5.11 使用正则表达式进行模式匹配 194
  84. 5.12 模式匹配中的大小写问题 198
  85. 5.13 分割或者串联字符串 200
  86. 5.14 查询子串 203
  87. 5.15 使用FULLTEXT查询 203
  88. 5.16 用短语来进行FULLTEXT查询 208
  89. 5.17 要求或禁止FULLTEXT搜索单词 209
  90. 5.18 用FULLTEXT索引来执行词组查询 211
  91. 第6章:使用日期和时间 213
  92. 6.0 引言 213
  93. 6.1 选择合适的日期或者时间变量类型 214
  94. 6.2 修改MySQL中的日期格式 216
  95. 6.3 设置客户端时区 220
  96. 6.4 获取当前日期或时间 222
  97. 6.5 使用TIMESTAMP来跟踪行修改时间 223
  98. 6.6 从日期或者时间值中分解出各部分值 226
  99. 6.7 合成日期或者时间值 232
  100. 6.8 在时间数据类型和基本单位间进行转换 234
  101. 6.9 计算两个日期或时间之间的间隔 238
  102. 6.10 增加日期或时间值 243
  103. 6.11 计算年龄 248
  104. 6.12 将一个日期和时间值切换到另一个时区 253
  105. 6.13 找出每月的第一天,最后一天或者天数 254
  106. 6.14 通过子串替换来计算日期 257
  107. 6.15 计算某个日期为星期几 258
  108. 6.16 查出给定某周的某天的日期 259
  109. 6.17 执行闰年计算 262
  110. 6.18 接近但不是ISO格式的日期格式 265
  111. 6.19 将日期或时间当成数值 266
  112. 6.20 强制MySQL将字符串当作时间值 268
  113. 6.21 基于时间特性来查询行 269
  114. 第7章:排序查询结果 273
  115. 7.0 引言 273
  116. 7.1 使用ORDER BY命令排序查询结果 274
  117. 7.2 使用表达式排序 278
  118. 7.3 显示一组按照其它属性排序的值 280
  119. 7.4 字符串排序的大小写区分控制 283
  120. 7.5 基于日期的排序 286
  121. 7.6 按日历排序 288
  122. 7.7 按周历排序 290
  123. 7.8 按时钟排序 291
  124. 7.9 按数据列的子串排序 292
  125. 7.10 按固定长度的子串排序 293
  126. 7.11 按可变长度的子串排序 295
  127. 7.12 按域名顺序排列主机名 300
  128. 7.13 按照数字顺序排序点分式IP地址 302
  129. 7.14 将数值移动到排序结果的头部或尾部 304
  130. 7.15 按照用户定义排序 308
  131. 7.16 排序枚举数值 309
  132. 第8章:生成摘要 313
  133. 8.0 引言 313
  134. 8.1 使用COUNT函数生成摘要 315
  135. 8.2 使用MIN()和MAX()函数生成摘要 318
  136. 8.3 使用SUM()和AVG()函数生成摘要 319
  137. 8.4 使用DISTINCT函数消除重复 321
  138. 8.5 查找数值相关的最大值和最小值 323
  139. 8.6 控制MIN()函数和MAX()函数的字符串大小写区分 325
  140. 8.7 将摘要划分为子群 327
  141. 8.8 摘要与空值 330
  142. 8.9 使用确定的特性选择组群 333
  143. 8.10 使用计数确定数值是否唯一 334
  144. 8.11 使用表达式结果分组 335
  145. 8.12 分类无类别数据 336
  146. 8.13 控制摘要显示顺序 340
  147. 8.14 查找最小或最大的摘要数值 342
  148. 8.15 基于日期的摘要 344
  149. 8.16 同时使用每一组的摘要和全体的摘要 346
  150. 8.17 生成包括摘要和列表的报告 349
  151. 第9章:获取和使用元数据 353
  152. 9.0 引言 353
  153. 9.1 获取受语句影响的数据行数目 355
  154. 9.2 获取设置元数据的结果 357
  155. 9.3 确定一条语句是否生成了结果集 367
  156. 9.4 使用元数据来格式化查询输出 368
  157. 9.5 列举或检查数据库或表的扩展 372
  158. 9.6 访问表数据列定义 374
  159. 9.7 取得ENUM和SET数据列信息 381
  160. 9.8 在应用程序中使用表结构信息 383
  161. 9.9 获取服务器元数据 388
  162. 9.10 编写适合MySQL服务器版本的应用程序 389
  163. 9.11 确定默认数据库 390
  164. 9.12 监测MySQL服务器 391
  165. 9.13 确定服务器支持哪个存储引擎 393
  166. 第10章:数据导入导出 395
  167. 10.0 引言 395
  168. 10.1 使用LOAD DATA和mysqlimport导入数据 399
  169. 10.2 指定数据文件位置 401
  170. 10.3 指定数据文件的结构 403
  171. 10.4 处理引号和特殊字符 405
  172. 10.5 导入CSV文件 406
  173. 10.6 读取不同操作系统的文件 407
  174. 10.7 处理重复的键值 408
  175. 10.8 获取关于错误输入数据的诊断信息 408
  176. 10.9 跳过数据文件行 410
  177. 10.10 指定输入列顺序 411
  178. 10.11 在插入输入值之前对数据文件进行预处理 412
  179. 10.12 忽略数据文件列 413
  180. 10.13 从MySQL中导出查询结果 415
  181. 10.14 将表导出为文本文件 417
  182. 10.15 以SQL格式导出表内容或定义 418
  183. 10.16 将表或数据库拷贝到另一个服务器 420
  184. 10.17 编写你自己的导出程序 422
  185. 10.18 将数据文件从一种格式转化为另一种格式 426
  186. 10.19 提取和重排数据文件列 427
  187. 10.20 使用SQL模式来控制错误的输入数据处理 430
  188. 10.21 验证并转换数据 432
  189. 10.22 使用模式匹配来验证数据 435
  190. 10.23 使用模式来匹配广泛的内容类型 438
  191. 10.24 使用模式来匹配数值 439
  192. 10.25 使用模式来匹配日期或时间 441
  193. 10.26 使用模式来匹配E-mail地址或URL 445
  194. 10.27 使用表元数据来验证数据 446
  195. 10.28 使用一个查找表来验证数据 449
  196. 10.29 将两个数字的年份值转化为四位形式 452
  197. 10.30 验证日期和时间合法性 453
  198. 10.31 编写时间处理工具 456
  199. 10.32 使用不完整的日期 461
  200. 10.33 导入非ISO格式日期值 462
  201. 10.34 使用非ISO格式导出日期值 463
  202. 10.35 导入和导出NULL值 464
  203. 10.36 根据数据文件猜测表结构 466
  204. 10.37 在MySQL和Access之间交换数据 469
  205. 10.38 在MySQL和Microsoft Excel之间交换数据 470
  206. 10.39 将输出结果导出为XML 472
  207. 10.40 将XML导入MySQL 476
  208. 10.41 尾声 478
  209. 第11章:生成和使用序列 481
  210. 11.0 引言 481
  211. 11.1 创建一个序列列并生成序列值 482
  212. 11.2 为序列列选择数据类型 485
  213. 11.3 序列生成的行删除的效果 487
  214. 11.4 查询序列值 490
  215. 11.5 对一个已有的序列进行重新计数 494
  216. 11.6 扩展序列列的取值范围 496
  217. 11.7 序列顶部数值的再使用 497
  218. 11.8 确保各行按照给定顺序重编号 498
  219. 11.9 从某个特定值开始一个序列 499
  220. 11.10 序列化一个未序列的表 500
  221. 11.11 使用AUTO_INCREMENT栏来创建多重序列 502
  222. 11.12 管理多重并发AUTO_INCREMENT数值 507
  223. 11.13 使用AUTO_INCREMENT值将表进行关联 508
  224. 11.14 将序列生成器用作计数器 511
  225. 11.15 创建循环序列 514
  226. 11.16 按行顺序输出数列查询 516
  227. 第12章:使用多重表 517
  228. 12.0 引言 517
  229. 12.1 在表中找到与另一个表中的行相匹配的行 518
  230. 12.2 查找与其他表不匹配的行 526
  231. 12.3 将表与自身进行比较 531
  232. 12.4 产生主从列表和摘要 536
  233. 12.5 枚举多对多的关系 539
  234. 12.6 查找每组行中含有最大或最小值的行 544
  235. 12.7 计算队伍排名 548
  236. 12.8 使用连接补全或识别列表的缺口 554
  237. 12.9 计算连续行的差值 559
  238. 12.10 发现累积和与动态均值 561
  239. 12.11 使用连接控制查询输出的顺序 565
  240. 12.12 在单个查询中整合几个结果集 567
  241. 12.13 识别并删除失配或独立行 572
  242. 12.14 为不同数据库间的表执行连接 575
  243. 12.15 同时使用不同的MySQL服务器 576
  244. 12.16 在程序中引用连接的输出列名称 579
  245. 第13章:统计技术 583
  246. 13.0 引言 583
  247. 13.1 计算描述统计 584
  248. 13.2 分组描述统计 587
  249. 13.3 产生频率分布 589
  250. 13.4 计数缺失值 592
  251. 13.5 计算线性回归和相关系数 594
  252. 13.6 生成随机数 596
  253. 13.7 随机化行集合 598
  254. 13.8 从行集合中随机选择条目 601
  255. 13.9 分配等级 602
  256. 第14章:处理重复项 607
  257. 14.0 引言 607
  258. 14.1 防止在表中发生重复 608
  259. 14.2 处理向表中装载行时出现的重复错误 610
  260. 14.3 计数和识别重复项 614
  261. 14.4 从表中消除重复项 618
  262. 14.5 从自连接的结果中消除重复 622
  263. 第15章:执行事务 627
  264. 15.0 引言 627
  265. 15.1 使用事务存储引擎 628
  266. 15.2 使用SQL执行事务 630
  267. 15.3 在程序中执行事务 631
  268. 15.4 在Perl程序中使用事务 634
  269. 15.5 在Ruby程序中使用事务 636
  270. 15.6 在PHP程序中使用事务 637
  271. 15.7 在Python程序中使用事务 638
  272. 15.8 在Java程序中使用事务 639
  273. 15.9 使用事务的替代方法 640
  274. 第16章:使用存储例程、触发器和事件 643
  275. 16.0 引言 643
  276. 16.1 创建复合语句对象(此节翻译有误) 645
  277. 16.2 使用存储函数封装计算 647
  278. 16.3 使用存储过程来“返回”多个值 649
  279. 16.4 用触发器来定义动态的默认列值 650
  280. 16.5 为其他日期和时间类型模拟TIMESTAMP属性 653
  281. 16.6 使用触发器记录表的变化 655
  282. 16.7 使用事件调度数据库动作 658
  283. 第17章:关于Web应用中MySQL的介绍 661
  284. 17.0 引言 661
  285. 17.1 Web页面产生的基本原则 663
  286. 17.2 使用Apache运行web脚本 667
  287. 17.3 使用Tomcat运行Web脚本 678
  288. 17.4 在Web输出中编码特殊字符 688
  289. 第18章:在Web页面中混合查询结果 697
  290. 18.0 引言 697
  291. 18.1 以段落文本显示查询结果 698
  292. 18.2 以列表形式显示查询结果 700
  293. 18.3 以表格形式显示查询结果 712
  294. 18.4 将查询结果显示为超链接 717
  295. 18.5 根据数据库内容中创建导航索引 721
  296. 18.6 存储图片或其他二进制数据 726
  297. 18.7 检索图片或其他二进制数据 733
  298. 18.8 提供标语广告 736
  299. 18.9 提供可下载的查询结果 738
  300. 18.10 使用模板系统生成web页面 741
  301. 第19章:用MySQL处理Web输入 761
  302. 19.0 引言 761
  303. 19.1 编写脚本生成Web表单 764
  304. 19.2 根据数据库内容构建单取表单元素 767
  305. 19.3 根据数据库内容构建多取表单元素 783
  306. 19.4 将一条数据库记录导入表单 788
  307. 19.5 收集Web输入 793
  308. 19.6 验证Web输入 804
  309. 19.7 将Web输入存入数据库 805
  310. 19.8 处理文件上传 808
  311. 19.9 执行搜索并显示结果 815
  312. 19.10 生成上一页和下一页链接 818
  313. 19.11 生成点击排序的表格头单元 822
  314. 19.12 Web页面访问计数 827
  315. 19.13 Web页面访问日志 831
  316. 19.14 使用MySQL存储Apache日志 833
  317. 第20章:使用基于MySQL的Web会话管理 841
  318. 20.0 引言 841
  319. 20.1 在Perl应用程序中使用基于MySQL的会话 845
  320. 20.2 在Ruby应用程序中使用基于MySQL的存储 850
  321. 20.3 在PHP会话管理器中使用基于MySQL的存储 854
  322. 20.4 在Tomcat中为会话支持存储使用MySQL 865
  323. 附录A:获取MySQL软件 875
  324. 附录B:从命令行执行程序 881
  325. 附录C:JSP和Tomcat知识的初步内容 889
  326. 附录D:参考资料 917
  327. 索引 921
书名:MySQL Cookbook中文版(第二版)
作者:Paul DuBois
国内出版社:中国电力出版社
出版时间:2009年02月
书号:978-0-596-52708-2
原版书出版商:O'Reilly Media
Paul DuBois
 
Paul DuBois是MySQL在线参考手册的第一批贡献者之一,这是在20世纪90年代后期MySQL的开放年代支持管理员和开发者的一个文档项目。他已经撰写了多本关于MySQL的著作,包括《MySQL Cookbook》的第1版。
 
 
《MySQL Cookbook》第2版封面上的动物是一只绿色的变色龙。这种蜥蜴常见于美国东南部、加勒比海,以及南美洲。绿色的变色龙居住于潮湿、阴暗的环境,诸如树枝和灌木中。它们依靠小昆虫,如蟋蟀、蟑螂、飞蛾、蚧螬和蜘蛛而生活。
绿色的变色龙体型细长,头部狭窄,尾巴长而细小——可达躯体的两倍长。它们双足的特殊结合使它们可以攀爬,粘附且奔跑于任何表面上。它们有6到8英寸长。虽然,如它们的名字所示,绿色的变色龙通常是鲜绿色,但它们的颜色可以随周围环境而变化,可以在棕灰色、棕色和绿色间变换。雄变色龙有粉色的喉垂,当它们求欢或保卫领地时就可以伸出来。
封面的图像来自Dover Pictorial Archive的19世纪雕版画。