描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787519829728
产品特色
编辑推荐
随着MySQL受欢迎程度的提高,关于如何通过MySQL解决具体问题的疑问越来越多,这本书也应运而生。当需要快速的解决方案或技术时,这本手册里的资源可以为没有时间从头解决MySQL问题的程序员或专家提供大量简短且重点突出的代码、数百个完整的示例,以及清晰简明的解说。“本书是一本真正的经典之作,也是长期以来*秀的MySQL案例集。书中涵盖了初学者所需的基础知识,同时也为高级用户呈现了MySQL的*发展。书中丰富的技巧对MySQL专业人士来说更是难能可贵。”——Ulf WendelMySQL高级软件工程师,mysqlnd PHP库合伙创始人
内容简介
本书主要面向数据库初学者和专家,以及Web开发人员,经过更新后涵盖了MySQL*版的强大功能。本书侧重于使用Python、PHP、Java、Perl和Ruby的API进行编程。本书包含两百多个技巧,你可以从中学习:使用mysql客户端,编写基于MySQL的程序。建表、加载数据,以及从表中选择数据。存储、获取和处理字符串。使用日期和时间。排序查询结果,生成汇总信息。使用存储例程、触发器和计划事件。导入、导出、验证,以及重新格式化数据。执行事务,统计应用。处理Web输入,根据查询结果生成Web网页。使用MySQL进行Web会话管理。安全防范和服务器管理。
目 录
前 言
MySQL数据库管理系统很受欢迎,原因有很多,例如速度快、易于设置、使用和管理,可以在各种版本的UNIX和Windows下运行,基于MySQL的程序可以用多种语言编写。随着MySQL流行度的提高,用户常有如何解决特定问题的疑问,为他们做解答的需求也应运而生。这便是本书的主旨所在:当使用MySQL遇到特定类型的问题需要攻克时,你可以把本书当作一本唾手可得的资料,从中找到快速的解决方案或技术。因为本书是一本手册,所以理所当然提供了很多案例:你可以直接遵循书中的说明,而无需从头开发自己的代码。本书的编写采用了问题-解决方案的格式,非常实用,且内容易于阅读和理解。
书中包含很多小节,每个小节都描写了如何编写一个查询语句、应用一项技术或开发一段脚本来解决特定范围内的一个问题。本书不会教你开发成熟复杂的应用程序,但它可以帮助你解决在开发自己的应用程序时遇到的实际困难。例如,很常见的一个问题是,“在编写查询语句时,如何处理数据值中出现的引号和特殊字符?”这其实并不难,但当你不确定应该从何入手时就会感到沮丧。本书演示了解决问题的方法,它揭示了从哪里开始及如何继续。这些知识可以反复为你提供帮助,因为在掌握了解决方法后,你可以将该技术应用到任何类型的数据,例如文本、图像、声音或视频剪辑、新闻文章、压缩文件或PDF文档等。另一个常见问题是,“我可以同时访问多个表的数据吗?”答案是“可以”,这很容易做到,因为你只需要了解正确的SQL语法。但是,只有看到本书中的示例,你才能清楚地知道做法。
你可以从本书中学到的其他技巧,包括:
? 如何使用SQL来查询、排序和汇总行。
? 如何查找表之间的匹配或不匹配。
? 如何执行事务。
? 如何计算日期或时间之间的间隔,包括年龄计算。
? 如何识别或移除重复的行。
? 如何正确使用LOAD DATA读取数据文件或查找文件中的非法值。
? 如何通过严格模式来防止将错误的数据输入到数据库。
? 如何生成序列号并用作唯一的行标识符。
? 如何将视图当作“虚拟表”使用。
? 如何编写存储过程和函数;如何设置触发器,并在插入或更新表的行时激活触发器,以便执行特定的数据处理操作;如何使用事件调度程序按计划运行查询。
? 如何根据数据库的内容生成网页。
? 如何管理用户账号。
? 如何控制服务器日志。
了解如何使用MySQL的其中一个方面是了解如何与服务器通信,即如何使用SQL——结构化查询语言。因此,本书的一个重点就是使用SQL来编写回答特定类型问题的查询。学习和使用SQL的一个有用工具是mysql客户端程序,随本书一起发行的MySQL包中有该程序。你可以在交互式的模式下使用该客户端将SQL语句发送到服务器并查看结果。这非常便利,因为它提供了SQL的直接接口。实际上,我们将在第1章专门讨论客户端程序mysql。但是,仅仅能够执行SQL查询还不够。通常从数据库提取的信息需要进一步的处理,或者以特定的方式呈现。如果查询语句间有复杂的相互关系,例如当需要根据一个查询的结果来执行其他查询时,该怎么办?如果你需要生成一份具有特定格式要求的专业报告时,该怎么办?这些问题是本书的另一个重点:如何通过应用程序编程接口(API)编写与MySQL服务器交互的程序。
在掌握了如何在编程语言的上下文中使用MySQL后,你就可以通过以下方式开发MySQL的功能:? 可以先将查询结果保存起来,然后再重复使用。? 可以充分利用通用编程语言的功能,根据查询成功或失败,以及返回的内容做决定,然后再采取相应的动作。? 可以随心所欲地格式化和显示查询结果。如果你正在编写命令行脚本,则可以生成纯文本。如果是基于Web的脚本,则可以生成HTML表格。如果打算将提取的信息传输到其他系统的应用程序,则可以生成XML格式的数据文件。
SQL与通用编程语言的结合可以为执行查询和处理结果提供非常灵活的框架。编程语言提高了执行复杂数据库操作的能力。但这并不意味着这本书很复杂。本书的内容将尽量保持简单,同时展示了如何使用易于理解和掌握的技术来构建小的功能块。你可以自由将这些技术应用到自己的程序中,并据此构建任意复杂的应用程序。虽然遗传密码的基础只有四种核酸,但这些基本元素一旦结合到一起,就可以产生我们周围不计其数的生命物种。虽然音阶中只有12个音符,但是经过技艺高超的作曲家之手,将它们交织在一起就可以产生丰富多彩变化无穷的乐曲。同样的道理,在你掌握了一系列简单的案例后,发挥你的想象力,将它们应用到你想要解决的数据库编程问题上,即使你创建的应用程序不是艺术作品,但也肯定会非常有用,而且还会帮助你和其他人提高工作效率。本书面向的读者群对于所有想使用MySQL的人来说,本书都很有用,包括想在个人项目(例如博客或维基)中使用数据库的个人,以及专业数据库和Web开发人员。本书也适用那些目前没有使用MySQL但有此意向的人。例如,如果你想学习数据库,但是觉得Oracle等大型数据库系统可能有点令人生畏,那么MySQL就很适合你(也许不应该这么说。因为Oracle在2010年买下了MySQL,现在是本书作者的老板)。
如果你对MySQL很陌生,那么你会在本书中找到许多新颖的使用方法。如果你有使用MySQL的经验,那么你可能很熟悉书里提出的许多问题,但是以前你可能没有必要去解决它们,而现在有了这本书就可以大大节省时间。你可以利用书中给出的案例,将它们应用到自己的程序中,从而避免从头开始编写代码。本书的内容涵盖了从入门到高级的各个方面,所以如果某一个案例中描述的技术对你来说太过于简单,那么可以直接跳过。相反,如果你无法理解某一个案例,那么可以先放在一边,等稍后阅读了其他一些案例后再回过头来看。本书主要内容很可能当你阅读本书的时候,正在尝试开发应用程序,但不确定如何实现其中的某些部分。在这种情况下,你已经清楚需要解决的问题类型,所以可以查看目录或索引,找到能够教你解决问题的相应章节。
理想情况下,这些章节的内容会完全符合你的想法。如果不是,那么你可以根据手头的问题,通过调整某个案例来解决类似的问题。我会解释每种技术所涉及的原则,所以你可以按照应用程序的特定需求进行修改。阅读本书的另一种方法是,你并没有特别的问题,但是仍然可以通读本书。这样做可以让你更全面地了解MySQL的功能,因此我建议你偶尔翻阅一下本书。如果你能够了解本书中讲解的问题,那么它可以成为一个更高效的工具。
随着深入后面的章节,有时你会发现这些章节使用了前面章节所介绍的技术。在同一章中亦是如此,后面的小节经常会用到前面小节介绍过的技术。如果你翻开某一章,发现某一节用到的技术你并不熟悉,那么可以查看目录,找到介绍了该技术的小节。例如,如果案例中用到了你不熟悉的ORDER BY子句对查询结果进行排序,那么你可以回到第7章,阅读有关各种排序的方法及对它们工作原理的讨论。下面是每章的概述,希望能让你对本书的内容有大致的了解。
第1章,客户端程序mysql。本章介绍了如何使用标准的MySQL命令行客户端。mysql通常是人们使用MySQL时,第一个会想到的也是最主要的接口,所以了解如何使用它的功能非常重要。通过该应用程序,你能够以交互的方式执行查询并查看结果,因此在快速实践中非常有用。你也可以在批处理模式下利用它来执行封装好的SQL脚本,或将它的输出发送到其他程序。除此之外,本章还讨论了其他使用mysql的方法,例如如何增强输出的可读性以及生成不同格式的输出等。
第2章,编写基于MySQL的程序。本章演示了MySQL编程的基本要素:如何连接到服务器、发起查询、获取结果,以及处理错误。本章还讨论了如何在查询中处理特殊字符和NULL值,如何编写库文件来封装常用操作的代码,以及收集连接到服务器所需参数的各种方法。
第3章,从表中查询数据。SELECT语句是从MySQL服务器检索数据的主要手段,本章涵盖了SELECT语句的几个方面:指定检索的列与行,处理NULL值,以及选择查询结果的某一部分。后面的章节将更详细地介绍其中的一些主题,本章概述了它们的基本概念。如果你需要了解有关行选择方面的背景介绍,或者对SQL知识了解不多,那么应该仔细阅读本章。
第4章,表管理。本章介绍了表的克隆,将结果复制到其他表、使用临时表,以及检查或更改表的存储引擎。
第5章,字符串。本章介绍了如何处理字符串数据。本章涵盖了字符集和排序规则、字符串比较、处理区分大小写的问题、模式匹配、拆分和组合字符串,以及执行全文搜索。
第6章,日期与时间。本章介绍了如何使用时间数据。本章描述了MySQL的日期格式以及如何按照其他格式显示日期值。本章还介绍了如何使用MySQL特殊的TIMESTAMP数据类型,如何设置时区,如何在不同时间单位之间进行转换,如何执行时间间隔的计算或根据一个日期生成另一个日期,以及如何执行闰年计算。
第7章,查询结果的排序。本章描述了如何按所需的顺序排列查询结果的行。包括指定排序方向、处理NULL值、字符串大小写的处理,以及按整个日期值或部分日期值进行排序。本章还提供了一些示例,说明如何对特殊类型的值进行排序,例如域名、IP地址和ENUM值。
第8章,汇总数据。本章介绍了评估一组数据的一般特征的技术,例如数量或最小值、最大值和平均值。
第9章,存储例程,触发器和计划事件。本章描述了如何编写存储在服务器端的存储函数和过程,在修改表时激活的触发器,以及按计划执行的事件。
第10章,元数据。本章讨论了如何获取有关查询返回的数据的信息,例如结果中的行数或列数,或每列的名称和数据类型。本章还介绍了如何查看MySQL中可用的数据库和表,或查看表的结构。
第11章,导入和导出数据。本章介绍了如何在MySQL和其他程序之间传递信息。包括如何使用LOAD DATA,将文件从一种格式转换为另一种格式,以及确定适合数据集的表结构。
第12章,验证与格式化数据。本章描述了如何提取或重新排列数据文件中的列,检查和验证数据,以及重新格式化值,例如常常会以各种格式出现的日期。
第13章,序列。本章讨论了AUTO_INCREMENT列,MySQL生成序列号的机制。本章介绍了如何生成新的序列值或获取最新值、如何重新排序列,以及如何使用序列生成计数器。本章还介绍了如何使用AUTO_INCREMENT值来维护表之间的主从关系,包括需要避免的陷阱。
第14章,连接与子查询。本章介绍了如何执行从多个表中选择行的操作。本章演示了如何通过比较表查找匹配或不匹配的数据,生成主从关系的列表和汇总信息,以及枚举多对多的关系。
第15章,统计技术。本章说明了如何生成描述性统计,频率分布,回归和相关性。本章还介绍了如何随机化一组行或从集合中随机选择行。
第16章,处理重复数据。讨论了如何识别,统计和移除重复的行,以及如何防止重复数据的发生。
第17章,事务处理。本章介绍了如何处理必须作为一个整体一起执行的多个SQL语句。本章讨论了如何控制MySQL的自动提交模式以及如何提交或回滚事务。
第18章,MySQL的Web应用简介。本章介绍了如何编写基于Web的MySQL脚本。Web编程可以根据数据库的内容生成动态的页面,或收集信息并存储到数据库中。本章讨论了如何为运行Perl、Ruby、PHP和Python脚本而配置Apache,以及如何为了运行用JSP编写的Java脚本而配置Tomcat。
第19章,根据查询结果生成网页的内容。本章演示了如何利用查询结果生成各种HTML结构,例如段落、列表、表格、超链接和导航索引。本章还描述了如何将图像存储到MySQL中以供以后检索和显示,以及如何生成可下载的结果集。
第20章,利用MySQL处理Web输入。本章讨论了如何通过Web获取用户的输入,并利用输入来创建新的数据库行或作为执行搜索的基础。本章主要介绍了表单处理,包括如何根据数据库中包含的信息构建表单元素,例如单选按钮、弹出菜单或复选框。
第21章,基于MySQL的Web会话管理。本章描述了如何在编写的应用程序内使用MySQL作为后备存储,并在多个请求间传递信息。如果你需要分阶段收集信息,或者根据先前的用户操作做出决策,那么本章的内容会非常有帮助行。第22章,服务器管理。本章主要面向的是数据库管理员。本章的内容包括服务器配置、插件接口、日志管理、服务器监控和备份。第23章,数据库的安全。本章也是有关管理员的知识。本章讨论了用户账号管理,包括创建账号、设置密码和分配权限。本章还介绍了如何实施密码策略、查找和修复不安全的账号,以及作废密码和重置过期的密码。
致谢感谢每一位读者,谢谢你们阅读本书。我希望这本书能给你带来帮助,也希望你能从中找到有用的信息。谢谢我的技术评审员Johannes Schlüter、Geert Vanderkelen和Ulf Wendel。他们提出了很多指正和建议,从各个方面提高了本书的创作,我深深地感谢他们的帮助。Andy Oram鼓动我写了本书的第三版,而且他也承担了本书的编者,Nicole Shelby将这本书推向了产品,Kim Cofer承担了本书的校对工作,而Lucie Haskins提供了本书英文原版书的索引。谢谢我的妻子Karen,她在写作过程中给予我的鼓励和支持让我感激不尽。
评论
还没有评论。