MySQL程式设计介绍

2008-02-23 07:42:31来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

MySQL有一组实用程式。例如,mysqldump 导出表的上下文和结构定义,mysqlimport将数据文档加载到表中, mysqladmin 实现管理w操作,mysql能够使用户和服务器交互来执行任意的查询。每个标准的MySQL实用程式都倾向于小巧,重点放在程式可完成特定的、有限的功能。即使mysql也是如此,从感觉上说,mysql比其他实用程式更灵活,因此能够用他来执行任何数量的各种查询,即他就是为允许向服务器直接发布SQL 查询,并可查看查询结果这一单一目的而设计的。

MySQL客户机这种有限的特性并不是缺点,而是特意设计的。程式是具备通用目的的实用程式;他们并不试图预料您所想做的任何可能的需要。MySQL的研发者们不赞成编写大型的、臃肿的程式来试图做可能想去做的每件事情(而且这样做的结果将使程式中包括大量的您根本不关心的事情的代码)。然而,有时有些应用确实有常规客户机的能力所无法处理的需求。为了处理这些情况,MySQL提供一个客户机编程库。这允许您编写自己的程式,满足您的应用程式可能具备的任何特定需求。通过允许您对MySQL服务器的访问,客户机的开放程度只受您自己想象力的限制了。

编写自己的程式能够获取如何特别的能力呢?让我们比较一下mysql客户机和其没有附加代码的接口对MySQL服务器的访问:

能够定制输入处理

用mysql能够输入原始的SQL 语句。用自己的程式,能够为用户提供使用起来更直观、更容易的输入方法。用程式可使用户不必知道SQL—甚至不必知道在完成的任务中数据库承担的角色。

输入信息的采集可能是像命令行风格的提示和值读取这样基本的方式,或可能是使用屏幕管理程式包(如curses 或S - L a n g)、使用Tcl/Tk 的X 窗口或Web 浏览器格式实现的基于屏幕输入那样复杂的方式。

对大多数人来说,通过填写一定的格式来指定搜索参数的形式比通过发布SELECT语句更容易。例如,一位房地产经纪人,要寻找一定价格范围、风格或位置的房屋,只要将查寻参数输入到表格中,就能够最小的代价得到符合条件的内容。输入新记录或更新已有记录也类似地考虑这种应用。在数据输入部门的键盘操作员应该无需知道像INSERT、REPLACE 或UPDATE 这样的SQL 语法。

在最终用户和MySQL服务器之间提出输入采集层的另一个原因是能够校验用户提供的输入。例如,能够检查数据,确认他们是符合MySQL需要的格式,或能够需要填写特定的区域。

能够定制输出

mysql的输出基本上是无格式的;能够选择以制表符为分隔符或以表格形式输出。假如想要使输出结果看起来比较好,则必须自己对他进行格式化。这些需求可能像打印“Missing”而不是NULL 这样简单,也可能更复杂。考虑下面的报告:



这个报告包括几个特定的元素:

1、定制标题。

2、在State 列中重复值的抑制以便只在更改时才将这些值打印出来。

3、小计和总计的计算。

4、数字格式,如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外,还需要工具来执行包括主-细目关系和具备复杂输出格式需求的任务。程式提供将查询连接在一起的“胶”,并可用一个查询的输出作为另一个查询的输入。



5、能够将MySQL集成到任何应用程式中。许多程式都利用数据库的能力提供信息。通过发布一个快速查询,应用程式能够校验消费者号或检查一项条目是否在产品清单中。假设一个客户要寻找某些作者的任何书,则Web 应用程式能够在数据库中查找他们,然后将结果显示在该客户的浏览器上。

通过使用调用带有包含SQL 语句的输入文档的mysql的外壳脚本( shell script),能够实现一种初步的“集成”,然后,再使用其他UNIX实用程式加工这些输出。但是这可能变得很难看,特别是当任务变得更复杂时。当应用程式不断增长成为杂乱的修补工作时,他也可能产生一种“在工作,但觉得有错误”的感觉。此外,运行其他命令的外壳脚本的创建过程的开销可能超过您的预想。但他可能更有效率地和MySQL服务器直接交互,当在应用程式执行的每个阶段需要他的时候,都能够精确地提取想要的信息。针对我们在第1章“MySQL和SQL 介绍”中安装的样例数据库samp_db,我们已列举了若干需要自己编写和MySQL服务器交互的程式的目标。这些目标中的一些显示在下面的列表中:

■ 为打印而格式化Historical League 目录。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: My

下一篇: MYSQL基本数据库术语