在激活mysql时,有可能需要指定诸如主机名、用户名或口令这样的连接参数。运行一个程序需要做很多输入工作,这很快就会让人厌烦。有几种方法可最小化所做的键入工作,使连接更为容易,它们分别为:
[client] 行标记客户机选项组的开始;它后跟的所有行都是为MySQL客户机程序获得选项值准备的,这些行一直沿续到文件的结尾或另一不同的参数组的开始。在连接到服务器时,用指定的主机名、用户名和口令替换serverhost、yourname 和yourpass。对于笔者来说,.my.cnf 如下所示:
只有[client] 行是必须的。定义参数值的行都是可选的;可以仅指定那些所需要的参数。例如,如果您的MySQL用户名与UNIX 的登录名相同,则不需要包括user 行。在创建了.my.cnf 文件后,设置其访问方式为某个限定值以保证别人不能读取它:
在Windows 下,选项文件的内容是相同的,但其名称不同( c:my.cnf),而且不调用chmod 命令。因为选项文件在版本3.22 前未加到MySQL,所以更早的版本不能使用它们。特别是在Windows 下,您不能与共享MySQL分发包一起得到的客户机使用选项文件,因为它是基于MySQL3.21的。选项文件在注册过的MySQL的Windows 版本下工作得很好,否则可以从MySQLWeb 站点取得更新的支持选项文件的客户机。关于选项文件的详细内容可参阅附录E“MySQL程序参考”。
而bash 中的语法稍有不同:
可以定义一个别名使这两个命令等价:
显然,第一个比第二个更好键入。为了使这些别名在每次登录时都起作用,可将在外壳程序设置文件中放入一个alias 命令(如,csh 放入.cshrc,而bash 放入.bash_profile)。快捷键的其他形式是建立利用适当的选项执行mysql的外壳程序脚本。在UNIX 中,等价于samp_db 别名的脚该篇文章件如下所示:
如果笔者命名此脚本为samp_db 并使其可执行(用chmod +x samp_db),那么可以键入samp_db 运行mysql并连接到笔者的数据库中。在Windows 下,可用批命令文件来完成相同的工作。命名文件samp_db.bat,并在其中放入如下的行:
此批命令文件可通过在DOS 控制台提示符下键入samp_db 来执行,也可以双击它的Windows 图标来执行。如果访问多个数据库或连接到多个主机,则可以定义几个别名或脚本,每一个都用不同的选项调用mysql。
mysql是一个与数据库进行交互的极为有用的程序,但是其界面最适合于简短的、单行的查询。当然, mysql自身并不关心某个查询是否分成多行,但是长的查询很不好键入。输入一条查询也不是很有趣的事,即使是一条较短的查询也是如此,除非发现有错误才愿意重新键入它。
下面的例子描述了输入编辑的一个简单的使用。假定用mysql输入了下列查询:
如果在按Enter 前,已经注意到将“ p r e s I d e n t”错拼成了“ per s I d e n t”,则可按左箭头或Ctrl-B 多次移动光标到“s”的左边。然后按Delete 两次删除“er”,键入“r e”改正错误,并按Enter 发布此查询。如果没注意到错拼就按了E n ter,也不会有问题。在mysql显示了错误消息后,按上箭头或Ctrl-P 调出该行,然后对其进行编辑。
为了使用此查询来找出对Thomas Jefferson 感兴趣的会员,可以编辑此查询文件将depression 更改为Je fferson 并再次运行mysql。只要不很经常使用此查询,它工作得很好。如果经常使用,则需要更好的方法。使用此查询更为灵活的一种方法是将其放入一个外壳程序脚本中,此脚本从脚本命令行取一个参数并利用它来更改查询的文本。这样确定查询的参数,使得能够在运行脚本时指定令人感兴趣的关键字。为了了解这如何起作用,按如下编写一个较小的外壳程序脚本I n ter e s t s . S h:
其中第二行保证在命令行上有一个关键字;它显示一条简短的消息,或者退出。在< < Q U E RY_INPUT 和最后的Q U E RY_INPUT 之间的所有内容成为mysql的输入。在查询文本中,外壳程序用来自命令行的关键字替换$ 1。(在外壳程序脚本中, $ 1、$ 2 . . .为命令参数。)这使相应的查询反映了执行此脚本时在命令行上指定的关键字。在能够运行此脚本前,必须使其可执行:
现在不需要在每次运行脚本时对其进行编辑了。只要在命令行上告诉它需要查找什么就行了。如下所示:
4. 利用现有数据来创建新记录
cat 命令等待输入。
现在我们已经介绍了许多使用MySQL的知识。您已经知道了怎样设置数据库并创建表。能够将记录放入这些表中,并以各种方式对其进行检索,更改或删除。但是要掌握MySQL仍然有许多知识要学,本章中的教程仅仅给出了一些浅显的东西。通过考察我们的样例数据库就会明白这一点。我们创建了样例数据库及其表,并用一些初始的数据对其进行了填充。在这个工作过程中,我们明白了怎样编写查询,回答关于数据库中信息的某些问题,但是还有许多工作要做。
例如,我们没有方便的交互方式来输入学分保存方案的新学分记录,或输入历史同盟地址名录的会员条目。还没有方便的方法来编辑现有记录,而且我们仍然不能生成印刷或联机形式的同盟地址名录。这些任务以及一些其他的任务将在以后的各章中陆续地进行介绍,特别是在第7章“Perl DBI API”和第8 章“PHP API”中将要进行详细地介绍。
下一步将阅读本书中哪部分取决于您对什么内容感兴趣。如果希望了解怎样完成已经以
历史同盟和学分保存方案开始的工作,可看第一部分有关MySQL程序设计的内容。如果打算成为某个站点的MySQL管理员,本书的第三部分将对管理工作做较多的介绍。但是,笔者建议通过阅读第一部分中的其余各章,首先获得使用MySQL的一般背景知识。
这些章节讨论了MySQL怎样处理数据,进一步提供有关语法和查询语句的用途,并且说明了怎样使查询运行得更快。不管您在什么环境中使用MySQL,不管是运行mysql还是编写自己的程序,
还是作为数据库管理员,用这些内容打下一个良好的基础将有助于您站在一个较高的起点上。