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 脚本包括一组从开始到结束一次一个的可执行语句,具有最低限度的错误检查。