这个报告包括几个特定的元素:
■ 定制标题。
■ 在State 列中重复值的抑制以便只在更改时才将这些值打印出来。
■ 小计和总计的计算。
■ 数字格式,如9 4 3 8 4 . 2 4,打印为美元数量为$ 9 4 , 3 8 4 . 2 4。对于一些任务,甚至可能不需要任何输出。您可能正在对计算向后插入到另一个数据库表中的结果进行简单地检索信息。除了用户运行这个查询以外,甚至可能还想将这个结果输出到其他地方。例如,如果正在提取姓名和电子邮件地址以自动地填入为批量电子邮件生成信件格式的过程中,则程序产生输出。但是该输出由邮件接受者的信息组成,而没有运行程序人员的信息。
■ 可以在SQL自身施加的约束条件的环境下工作。SQL 不是一种带有条件选择、循环和子例程的流程控制结构的过程语言。SQL 脚本包括一组从开始到结束一次一个的可执行语句,具有最低限度的错误检查。
如果在批处理模式中使用mysql执行SQL 查询的一个文件,则mysql在出现第一个错误后退出,或者,如果指定--force 选项,则不管出现多少错误,都不加选择地执行所有查询。程序可以围绕语句提供流程控制,以便可以有选择地适应查询的成功或失败。可以根据另一个查询的成功或失败来执行一个查询,或根据前一个查询的结果来决定下一步要做的事情。SQL 具有非常有限的语句间的连续性,这点也被带到mysql中。使用一个查询的结果,并将它们应用于另一个查询中,或将多个查询结果联系在一起是困难的。L A S T _ INSERT _ID() 可用于获取由前一个语句最新生成的AUTO_INCREMENT 值,仅仅是关于它的。
更一般的情况是,要想检索一组记录,然后使用每一条记录作为一系列复杂的进一步操作的基础是困难的。例如,检索一个消费者列表然后查询每个消费者的详细信用历史,对每个客户来说可能要包括若干个查询。在某些情况下,可能想开发票,在发票头写上需要联系的客户信息,然后按次序列出每项条目。mysql不适合这些类型的任务,因为可能需要依赖于前几个查询结果的若干查询,并且这些任务超出了mysql的布局设计的能力。一般来说,除了mysql外,还需要工具来执行包括主-细目关系和具有复杂输出格式需求的任务。程序提供将查询连接在一起的胶,并可用一个查询的输出作为另一个查询的输入。
■ 可以将MySQL集成到任何应用程序中。许多程序都利用数据库的能力提供信息。通过发布一个快速查询,应用程序可以校验消费者号或检查一项条目是否在产品清单中。假设一个客户要寻找某些作者的所有书,则Web 应用程序可以在数据库中查找它们,
然后将结果显示在该客户的浏览器上。
通过使用调用带有包含SQL 语句的输入文件的mysql的外壳脚本( shell script),可以实现一种初步的集成,然后,再使用其他UNIX实用程序加工这些输出。但是这可能变得很难看,特别是当任务变得更复杂时。当应用程序不断增长成为杂乱的修补工作时,它也可能产生一种在工作,但觉得有错误的感觉。此外,运行其他命令的外壳脚本的创建过程的开销可能超过您的预想。但它可能更有效率地与MySQL服务器直接交互,当在应用程序执行的每个阶段需要它的时候,都可以精确地提取想要的信息。针对我们在第1章MySQL和SQL 介绍中安装的样例数据库samp_db,我们已经列举了若干需要自己编写与MySQL服务器交互的程序的目标。这些目标中的一些显示在下面的列表中:
■ 为打印而格式化Historical League 目录。
■ 考虑外观和联机目录的寻找。
■ 通过电子邮件向成员发送补充通知。
■ 使用Web 浏览器很容易地将分数输入到学分册中。
在一些细节方面,我们将考虑的一个方面是将MySQL的能力与Web 环境结合起来。MySQL不直接提供对Web 应用程序的支持,但通过组合带有适当的工具的MySQL,通过We b可以很容易地访问数据库。使用Web 服务器可以指定查询,向客户的浏览器报告结果。将MySQL和Web 结合可能有两个想法:
■ 主要的兴趣在于数据库,只是想使用Web 作为工具来获取对数据更容易的访问。在这样的想法下,数据库的位置是清楚且明显的,因为它是兴趣的焦点。例如,可以编写Web 页来允许查看数据库所包含的表、表的结构,及表的内容。您打算使用Web 服务器来提高对MySQL的访问能力。这可能也是MySQL管理者的观点。
■ 主要的兴趣可能是Web 站点,为了使站点的内容对访问者更有价值,您可能想使用MySQL作为一个工具。例如,如果为站点的访问者运行信息板或讨论清单,则可以使用MySQL保留信息的轨迹。在这种情况下,数据库的角色更微妙,访问者甚至可以不关心您必须提供给他在服务器中执行的部分。您打算使用MySQL提高Web 服务器的能力。这可能也是Web 站点开发者的一个观点。
这些想法并不矛盾。例如,在Historical League 情况下,我们想通过允许联机输入来作为成员获取访问成员目录内容的一种方法而使用We b。提供对数据库的访问是Web 的一个用法。同时,League 的Web 站点在某些方面有些不完全,所以向站点增加目录内容,以便为成员提高站点的价值。增强站点所提供的服务是数据库的一种用法。
无论您如何看待MySQL与Web 的结合,实现方法都是类似的,即将前台的Web 站点与后台的MySQL连接,使用Web 服务器作为媒介。Web 服务器将查询从用户发送到MySQL服务器,检索查询结果,然后将它们传送给客户,在浏览器上显示。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)当然,不一定要联机处理数据,但这样做往往有好处,特别是与经过标准的MySQL客户机程序访问数据做比较时:
■ 通过Web 访问数据,人们可以使用他们喜欢的浏览器,在他们喜欢的平台上运行。他们不限制MySQL客户机程序所运行的系统。Web 浏览器更是这样,无论MySQL客户机分布如何广泛。
■ Web 界面的使用比独立命令行的MySQL客户机程序的使用更简单。
■ Web 界面可以根据特殊应用程序的要求来定制。而MySQL客户机程序是用固定接口来完成基本功能的工具。
■ 动态Web 页面扩充了MySQL的能力,它可以做到用MySQL客户机很难做到或根本不可能做到的事情。例如,仅用MySQL客户机程序不可能真正地使一体化购买车辆的应用程序组合成整体。
任何编程语言都可用来编写基于Web 的应用程序,但是,有些语言比其他语言更适合一些。请参阅5 . 2节选择A P I,我们将看到这点。
查看全套"Mysql入门系列教程"