MySQL数据库技术(06)[MySQL防范]
本文“MySQL数据库技术(06)[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
? 1.5 与MySQL 交互的本领
? ? 本节介绍怎样更有效地且键入工作量较小地与mysql 客户机程序举行交互.介绍怎样更简单地与服务器衔接,以及怎样不用每次都重新开始键入查询.
? ? 1.5.1 简化衔接历程
? ? 在激活mysql 时,有大概需求指定诸如主机名、用户名或口令这样的衔接参数.运行一个程序需求做很多输入工作,这很快就会让人讨厌.有几种办法可最小化所做的键入工作,使衔接更为简单,它们辨别为:
? ? ■ 操纵选项文件存储衔接参数.
? ? ■ 操纵外壳程序的号令历史反复号令.
? ? ■ 操纵外壳程序的别名或脚本定义mysql 号令行快速键.
? ? 1. 操纵选项文件
? ? 自版本3.22 以来,MySQL 答应在一个选项文件中存储衔接参数.然后在运行mysql 时就不用反复键入这些参数了;仅当您曾经在号令行上键入过它们时可以利用.这些参数也可认为其他MySQL 客户机所用,如为mysqlimport 所用.这也表示在利用这些程序时,选项文件削减了键入工作.为了操纵选项文件办法指定衔接参数,可成立一个名为~ / . m y.cnf (即主目录中的一个名为. m y.cnf 的文件).选项文件是一个无格局的文本文件,因此可用任何文本编辑器来成立它.文件的内容所下所示:
? ??[client] 行标志客户机选项组的开始;它后跟的全部行都是为MySQL 客户机程序得到选项值预备的,这些行一向沿续到文件的末尾或另一差别的参数组的开始.在衔接到服务器时,用指定的主机名、用户名和口令替换s e r v e r h o s t、yourname 和y o u r p a s s.关于笔者来说,. m y.cnf 以下所示:
? ?只有[client] 行是必须的.定义参数值的行都是可选的;可以仅指定那些所需求的参数.比方,假如您的MySQL 用户名与Unix 的登录名相同,则不需求包含user 行.在成立了. m y.cnf 文件后,设置其拜候方法为某个限定值以保证别人不能读取它:
? ? 在Windows 下,选项文件的内容是相同的,但其名称差别( c : \ m y. c n f),并且不调用chmod 号令.因为选项文件在版本3.22 前未加到M y S Q L,所以更早的版本不能利用它们.分外是在Windows 下,您不能与同享MySQL 分发包一同得到的客户机利用选项文件,因为它是基于MySQL 3.21 的.选项文件在注册过的MySQL 的Windows 版本下工作得很好,不然可以从MySQL Web 站点获得更新的支持选项文件的客户机.关于选项文件的具体内容可参阅附录E"MySQL 程序参考".
? ? 2. 操纵外壳程序的号令历史诸如c s h、tcsh 和bash 这样的外壳程序会在一个历史列表中记下您的号令,并答应反复该列表中的号令.假如采取的是这样的外壳程序,其历史列表可帮忙免除完好号令的键入.比方,假如近来调用了m y s q l,可按以下号令再次履行它:% !my 此中"!"奉告外壳程序搜索整个号令历史找到近来以" m y"开首的号令,并像您打入的一样公布它.有的外壳程序还答应操纵上箭头和下箭头键(大概是Ctrl-P 和C t r l - N)在历史列表中上下移动.可用这种办法挑选想要的号令,然后按Enter 履行它.tcsh 和bash 有这种功效,而其他外壳程序也大概有.可参阅呼应的外壳程序以找到更多利用历史列表的内容.
? ? 3. 操纵外壳程序的别名或脚本假如利用的外壳程序供应别名功效,那么可以设置答应通过键入简短名调用长寿令的号令快速键.比方,在csh 或tcsh 中,可操纵alias 号令设置名为samp_db 的别名,以下所示:
? ??而bash 中的语法稍有差别:
? ?可以定义一个体名使这两个号令等价:
? ? 明显,第一个比第二个更好键入.为了使这些别名在每次登录时都起作用,可将在外壳程序设置文件中放入一个alias 号令(如,csh 放入. c s h r c,而bash 放入. b a s h _ p r o f i l e).快速键的其他情势是成立操纵得当的选项履行mysql 的外壳程序脚本.在UNIX 中,等价于samp_db 别名的脚本文件以下所示:
? ? 假如笔者命名此脚本为samp_db 并使其可履行(用chmod +x samp_db),那么可以键入samp_db 运行mysql 并衔接到笔者的数据库中.在Windows 下,可用批号令文件来完成相同的工作.命名文件s a m p _ d b . b a t,并在此中放入以下的行:
? ? 此批号令文件可通过在Dos 掌握台提醒符下键入samp_db 来履行,也可以双击它的Windows 图标来履行.假如拜候多个数据库或衔接到多个主机,则可以定义几个体名或脚本,每一个都用差别的选项调用m y s q l.
? ??1.5.2 以较少的键入公布查询
? ??mysql 是一个与数据库举行交互的极其有效的程序,但是其界面最合适于简短的、单行的查询.当然, mysql 自身并不关心某个查询能否分成多行,但是长的查询很不好键入.输入一条查询也不是很风趣的事,即便是一条较短的查询也是如此,除非发现有错误才乐意重新键入它.
? ??有几种可用来避免不必要的键入或重新键入的本领:
? ??■ 操纵mysql 的输入行编辑功效.
? ??■ 操纵拷贝和粘贴.
? ??■ 以批方法运行m y s q l.
? ??■ 操纵现有数据来成立新记录以避免键入I N S E RT 语句.
? ??1. 操纵mysql 的输入行编辑器
? ??mysql 具有内建的GNU Readline 库,答应对输入行举行编辑.可以对当前录入的行举行处理,或调出从前输入的行并重新履行它们(原样履行或做进一步的改正后履行).在录入一行并发现错误时,这是非常便利的;您可以在按Enter 键前,在行内退格并举行改正.假如录入了一个有错的查询,那么可以调用该查询并对其举行编辑以办理问题,然后再重新提交它.(假如您在一行上键入了整个查询,这是最简单的办法.)表1-4 中列出了一些非常有效的编辑序列,除了此表中给出的以外,还有很多输入编辑号令.操纵因特网搜索引擎,应当可以找到R e a d l i n e手册的联机版本.此手册也包含在Readline 分发包中,可在h t t p : / / w w w.gnu. org/ 的GN U Web 站点得到.
? ? 下面的例子描写了输入编辑的一个简单的利用.假定用mysql 输入了下列查询:
? ? 假如在按Enter 前,已经注意到将" p r e s i d e n t"错拼成了" p e r s i d e n t",则可按左箭头或Ctrl-B 多次移动光标到"s"的左边.然后按Delete 两次删除" e r",键入"r e"改正错误,并按Enter 公布此查询.假如没注意到错拼就按了E n t e r,也不会有问题.在mysql 显示了错误消息后,按上箭头或Ctrl-P 调出该行,然后对其举行编辑.
? ??输入行编辑在mysql 的Windows 版中不起作用,但是可从MySQL Web 站点获得免费的cygwin_32 客户机分发包.在该分发包中的mysqlc 程序与mysql 一样,但它支持输入行编辑号令.
? ??2. 操纵拷贝和粘贴公布查询
? ??假如是在窗口环境下工作,可将认为有效的查询文本保存在一个文件中并操纵拷贝和粘贴操作很简单地公布这些号令.其工作历程以下:
? ??1) 在Te l n e t窗口或DOS 掌握窗口中激活m y s q l.
? ??2) 在一个文档窗口翻开包含查询的文件.(如笔者在Mac OS 下利用B B E d i t,在U N I X中利用X Window System 下的xterm 窗口中的v i.)
? ??3) 为了履行存放在文件中的某个查询,挑选并拷贝它.然后切换到Telnet 窗口或DOS 掌握台,并将该查询粘贴到m y s q l.这个历程写起来仿佛有点令人讨厌,但它是一个快速录入查询的很简单的办法,实际利用时不用键入查询.这个办法也答应在文档窗口中对查询举行编辑,并且它答应拷贝和粘贴现有查询来构造一个新的查询.比方,假如您常常从某个特定的表中挑选行,但是喜好查看以差别方法存放的输出后果,则可以在文档窗口中保存一个差别的ORDER BY 子句的列表,然后为肆意的特定查询拷贝和粘贴想利用的那个子句.也可按其他方向拷贝和粘贴(从Telnet 到查询文件).在mysql 中录入行时,它们被保存在您的主目录中的名为.mysql_history 的文件中.假如您手工录入了一个但愿保存起来此后利用的查询,可退出m y s q l,在某个编辑器中翻开. m y s q l _ h i s t o r y,然后从.mysql_history 拷贝和粘贴此查询到您的查询文件.
? ??3. 以批方法运行mysql不一定必须交互式地运行m y s q l.mysql 可以以非交互式(批)方法从某个文件中读取输入.这关于按期运行的查询是很有效的,因为您一定不但愿每次运行此查询时都要重新键入它.只要一次性地将其放入一个文件,然后让mysql 在需求时履行该文件的内容便可.假定有一个查询查找member 表的interests 列,以找出那些对美国历史的某个方面感爱好的历史同盟会员.如查找对大萧条期有爱好的会员,可编写此查询以下(注意末尾处有一个分号,从而mysql 可以知道查询语句在何处完毕):
? ? 为了利用此查询来找出对Thomas Jefferson 感爱好的会员,可以编辑此查询文件将depression 更改成Je fferson 并再次运行m y s q l.只要不很常常利用此查询,它工作得很好.假如常常利用,则需求更好的办法.利用此查询更为机动的一种办法是将其放入一个外壳程序脚本中,此脚本从脚本号令行取一个参数并操纵它来更改查询的文本.这样肯定查询的参数,使得可以在运行脚本时指定令人感爱好的关键字.为了理解这若何起作用,按以下编写一个较小的外壳程序脚本i n t e r e s t s . s h:
? ? 此中第二行保证在号令行上有一个关键字;它显示一条简短的消息,大概退出.在< < Q U E RY_INPUT 和最后的Q U E RY_INPUT 之间的全部内容成为mysql 的输入.在查询文本中,外壳程序用来自号令行的关键字替换$ 1.(在外壳程序脚本中, $ 1、$ 2 . . .为号令参数.)这使呼应的查询反映了履行此脚本时在号令行上指定的关键字.在可以运行此脚本前,必须使其可履行:
? ??目前不需求在每次运行脚本时对其举行编辑了.只要在号令行上奉告它需求查找什么就行了.以下所示:
? ? 4. 操纵现有数据来成立新记录
? ? 可以用I N S E RT 语句每次一行地将新记录追加到表中,但是在通过手工键入I N S E RT 语句成立几个新记录后,大都人城市意识到应当有更好的追加记录的办法.一种挑选是操纵仅含有数据值的文件,然后操纵LOAD DATA 语句或mysqlimport 实用程序从该文件中装入记录.普通,可操纵已经以某种格局存在的数据来成立数据文件.这些数据信息大概包含在电子表中,大概在某个其他数据库中,应当将它们转换到MySQL.为了介绍起来简单,我们假定这些数据是在桌面微计算机的电子表中.要将电子表数据从桌面微计算机中转换到您的UNIX 账号下的某个文件中,可结合Telnet 操纵拷贝和粘贴.具体工作以下所示:1) 翻开UNIX 账号的一个Telnet 衔接.在Mac OS 下,可操纵诸如Better Telnet 或N CSA Telnet 这样的利用程序.在Windows 下,可以利用尺度的Telnet 程序.
? ? 2) 翻开电子表,挑选想转换的数据块,拷贝它.
? ? 3) 在Telnet 窗中,键入下列号令开始获得数据到文件data.txt.
? ?cat 号令等候输入.
? ?4) 将从电子表拷贝来的数据粘贴到Telnet 窗口.cat 认为您正在键入信息并忠厚地将它写入到data.txt 文件.
? ?5) 在全部粘贴数据已经写入该文件后,假如光标终止在数据行的末尾处而不是终止在新行的开始,按Enter.然后,按Ctrl-D 以指导"文件完毕".cat 终止输入等候并关闭data.txt文件.目前已经得到了包含有电子表中挑选的数据块的data.txt 文件,此文件已作好由LOAD DATA mysqlimport 加载到数据库的预备.
? ?拷贝和粘贴是一种将数据传入UNIX 文件的快速且简易的办法,但它最合适较小的数据集.量较大的数据大概会超越系统拷贝缓冲区.在这样的情形下,最好是以无格局文本(制表符脱离)的情势保存电子表.然后可操纵FTP 将呼应文件从微机上传送到UNIX 账号.转换文本情势(非二进制或影像情势)的文件以便行完毕符转换为UNIX 的行完毕符.(U N I X操纵换行符、Mac OS 操纵回车换行符、Windows 操纵回车换行符/换行符对作为行完毕符.)可奉告LOAD DATA 或mysqlimport 探求什么换行符,但是在UNIX 下,对含换行符的文件处理要更简单一些.
? ?在转换了文件之后,应当查抄一下在末尾处能否具空白行.假若有,应当将它们删除,不然在将该文件装载到数据库时,这些空白行将会转换为空白或畸形的记录.来自电子表格以无格局文本保存的文件,或具有能括住包含空格的值的括号.为了在将该文件装入数据库时去掉这些括号,可操纵LOAD DATA 的FIELDS ENCLOSED BY 子句,或操纵mysqlimport 的--fields - enclosed - by 选项.更具体的信息请参看附录D 中LOAD DATA 的呼应项.
? ?1.6 向何处去
? ?目前我们已经介绍了很多利用MySQL 的知识.您已经知道了怎样设置数据库并成立表.可以将记录放入这些表中,并以各种方法对其举行检索,更改或删除.但是要掌握M y S Q L仍旧有很多知识要学,本章中的教程仅仅给出了一些浅显的东西.通过观察我们的样例数据库就会懂得这一点.我们成立了样例数据库及其表,并用一些初始的数据对其举行了填充.在这个工作历程中,我们懂得了怎样编写查询,答复关于数据库中信息的某些问题,但是还有很多工作要做.
??? ?比方,我们没有便利的交互方法来输入学分保存筹划的新学分记录,或输入历史同盟地址名录的会员条目.还没有便利的办法来编辑现有记录,并且我们仍旧不能生成印刷或联机情势的同盟地址名录.这些任务以及一些其他的任务将在今后的各章中连续地举行介绍,分外是在第7章"Perl DBI API"和第8 章"PHP API"中将要举行具体地介绍.
??? ?下一步将阅读本书中哪部份取决于您对什么内容感爱好.假如但愿理解怎样完成已经以
历史同盟和学分保存筹划开始的工作,可看第一部份有关MySQL 程序计划的内容.假如打算成为某个站点的MySQL 管理员,本书的第三部份将对管理工作做较多的介绍.但是,笔者倡议通过阅读第一部份中的别的各章,首先得到利用MySQL 的普通后台知识.
??? ?这些章节谈论了MySQL 怎样处理数据,进一步供应有关语法和查询语句的用处,并且阐明了怎样使查询运行得更快.不管您在什么环境中利用M y S Q L,不管是运行mysql 还是编写自己的程序,
还是作为数据库管理员,用这些内容打下一个杰出的底子将有助于您站在一个较高的起点上.
以上是“MySQL数据库技术(06)[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |