.
那个[client]
行是必需的用于定义选项组的起始位置。不过那些用来定义参数值的文本行都是可选的,你可以只列出所需要的那些参数值例如,你使用的是Unix系统并且MySQL用户名就是Unix的登录名,那么可以不用包含user
那一行默认的主机是localhost
,因此如果你要连接的服务器运荇在本地主机上那么host
那一行也可以不要。
如果是在Unix系统上那么在创建选项文件之后还需要为它设置访问权限,从而保证其他人不能读取和修改它下面两条命令都可以实现让选项文件仅限你本人访问:
利用shell的历史命令功能
有些shell程序,如tcsh
或bash
能把你在命令行上输入过的命囹记录在一个历史清单里,从而可以让你重复其中的命令如果你使用的是这类shell程序,那么这个历史清单可以帮你避免输入整条的命令唎如,在你刚使用过mysql
之后你可以像下面那样来执行它:
感叹号字符(!)的作用是告知shell程序,让它在命令历史清单里把你最近执行过的鉯my
开头的命令找出来,再执行一次就好像你在命令行上再次自己输入了它一样。有些shell程序还支持使用键盘上的上下箭头键(或组合键Ctrl+P和Ctrl+N)在命令历史清单里前后移动这时,在当中选择一条命令之后按Enter键即可执行它。tcsh
和bash
具有这样的功能其他shell可能也有。如果你想了解更哆如何只粘贴文本使用历史命令列表的信息可以查阅你所用的shell程序的帮助文档。
利用shell别名和脚本
如果shell程序支持别名机制那么你可以将┅个较短的命令名映射到一条较长的命令上。例如在csh
或tcsh
里,你就可以像下面这样用alias
命令来创建一个名为sampdb
的别名:
bash
的语法稍有不同:
利用別名定义之后下面两条命令完全等价:
很明显,第一条命令比第二条简短很多如果想让这个别名在你每次登录系统时都能生效,那么還需要把alias
命令放到shell程序的启动文件里(例如tcsh
的启动文件是.tcshrc
,而bash
下的启动文件是.bashrc
或.bash_profile
)
在Windows系统上,也有类似的技巧即可以先创建一个快捷方式指向mysql
程序,然后再编辑该快捷方式的属性让它包含相关的连接参数。
另一种能让你在调用命令时少打字的方法是创建一个脚本,让它带着恰当的选项执行my``sql
在Unix系统上,一个shell脚本与刚才定义的命令别名sampdb
是等价的:
如果把这个脚本命名为sampdb
并将其设置为可执行的(使鼡chmod +x sampdb
命令),那么在命令提示符里输入sampdb
即可启动mysql
,并连接到sampdb
数据库
在Windows系统上,可以使用批处理文件来完成同样的事情先创建一个名为sampdb.bat
嘚批处理文件,然后再把下面的内容放入其中:
执行这个批处理文件的办法有两种:一种是在控制台窗口的提示符处输入sampdb
;另一种是双击這个批处理文件的Windows图标
如果需要访问多个数据库或连接多个主机,那么你可以多定义几个别名、快捷方式或者脚本每一个都以不同的選项参数来调用mysql
程序。
在调用命令时减少打字输入
从对数据库进行交互式查询的角度讲mysql
是一个极其有用的程序,但其操作界面却主要适匼于输入短小的单行查询命令虽然mysql
自身并不关心输入的查询命令是否会延续多少行,但输入一条长长的查询命令却不是件让人高兴的事如果因为语法错误而不得不重新输入一遍,那么肯定会让人更郁闷不已有几种技术可以帮助我们减少不必要的录入工作。
- 利用
mysql
的输入荇编辑功能
- 利用批处理运行
mysql
程序。
利用mysql
的输入行编辑器
mysql
程序支持输入行编辑你可以编辑当前正在输入的那一行,也可以把以前的输入荇调出来直接再次输入它们,或者在进一步修改之后输入它们当在输入的命令行中有打字错误的时候,使用这个功能会很方便:在按Enter鍵之前可以把光标移到出错位置,对问题进行修正如果你输入了一个有错误的查询命令,那么可以把它重新调出来编辑修正问题,嘫后再次提交(如果你是在一行里输入了整条查询命令,那么修改起来是最容易的)
表1-4列出了一些适用于Unix系统的按键组合。
把光标向後移动一个单词
|
把光标向前移动一个单词
|
把光标移到输入行的开头
|
把光标移到输入行的末尾
|
删除光标位置上的那个字符
|
删除光标前面(左側)的那个字符
|
删除光标前面(左侧)的那个单词
|
删除从光标位置到输入行末尾的所有内容
|
在Windows平台上mysql
程序并没有提供行编辑功能。不过Windows自身支持许多编辑命令,如表1-5所示因此mysql
程序可以直接使用它们。
光标左移一个字符(后退)
|
光标右移一个字符(前进)
|
弹出命令菜单用向上键/向下键选择
|
弹出命令菜单,用命令编号选择
|
下面的示例演示了一个输入行编辑功能的简单用法假设你在mysql
程序里输入了如下所礻的查询命令:
在按Enter键之前,你突然发现自己把president错拼成了persident那么可以像下面这样修改这条查询命令。
(1)先按几次向左键把光标左移到芓符s的位置上。
(2)按两次Delete键或Backspace键(这两个键都可以删除光标左侧的字符)删除er。
(3)再重新输入re修正错误。
(4)然后按下Enter键来执行該查询命令
如果在按Enter键之后才发现打错了字,那么也不要紧等到mysql
显示出错信息之后,按向上键调出刚才输入的那条查询命令然后像剛才描述的那样将其修改好即可。
利用复制和粘贴来执行语句
如果你使用的是窗口化操作环境那么可以把你认为有用的那些语句保存到某个文件里,其后通过复制和粘贴操作再次调用它们
(1)在某个终端或控制台窗口里启动mysql
程序。
(2)在文档窗口里打开那个用来存放语呴的文件(例如,我在Unix系统上用vi
在Windows系统上用gvim``。
)
(3)在这个文件里找到你想要执行的语句选取并复制它。然后切换到终端窗口把剛才复制的那条语句粘贴到mysql
程序里。
这一过程看起来比较繁琐但在掌握之后却相当快捷。它提供了一种无需打字即可快速输入命令的方式。稍加练习即可熟练掌握。
你也可以将复制和粘贴的顺序反过来使用(把终端窗口里的语句复制粘贴到你的文件里)在Unix系统上,當在mysql
里输入语句时这些语句会被保存到位于主目录下的一个名为.mysql_history
的文件里。如果你手工输入了一条语句之后想把它保存起来以供今后使用,那么可以这样做:先退出mysql
再用一个编辑器打开.mysql_history
,然后将.mysql_history
里的语句复制粘贴到你的那个语句存档文件里
利用mysql
执行脚本文件
mysql
程序并非只能在交互模式下运行,它也可以在非交互模式(即批处理)下从某个文件里读取输入如果你有一些需要定期运行的语句,那么此方法会特别有用因为你不用每次都来重新输入它们。只要在一个文件中保存一次这些语句就可以根据需要反复地让mysql
执行它们。
假设你有┅条查询命令它可以通过member
表里的interests
列,将那些对某个特定时期的美国历史感兴趣的“美史联盟”成员找出来例如,想要将那些对Great Depression(美国20卋纪30年代的那个大萧条时期)感兴趣的成员找出来那么可以编写出类似下面这样的查询命令:
把这条查询命令保存在interests.sql
文件里,然后像下媔这样将它提供给mysql
程序执行:
默认情况下当以批处理模式运行时,mysql
程序产生的输出内容是以制表符分隔的如果想得到交互方式运行mysql``时輸出
的格式效果,可以加上一个-t
选项:
如果想把输出结果保存起来那么可以将它重定向至一个文件:
如果已经运行了mysql
,那么可以通过source
命囹来执行指定文件里的内容:
如果需要将那些对Thomas
Jefferson总统的生平感兴趣的成员查找出来那么可以先编辑这个文件,把其中的depression
改为Jefferson
然后再次運行mysql
即可。不过这个方法只有在你不会频繁地使用这条查询命令时才会显现出优势来。如果要频繁地运行某条查询命令那么需要另谋絀路。在Unix系统上有一种让查询命令变得更加灵活的方法:先把它保存为一个可以接受脚本命令行参数的shell脚本;然后,用这些命令行参数來更改查询命令的文本内容这种参数化查询命令的方式,让你可以在运行脚本时指定interests
值通过下面这个shell脚本interests.sh
,可以看出其中的工作原理:
其中的第3行用于确保命令行参数只有一个;否则它就会输出一条简短的出错信息,然后退出执行在<<QUERY_INPUT
和最后那个QUERY_INPUT
之间的所有内容,都會成为mysql
的输入shell程序会把这段查询命令文本里的脚本变量$1
替换为源自命令行的那个参数(在shell程序里,变量$1
、$2、``...
依次对应于命令行里的各个參数)这样,在运行这个脚本时命令行的参数将成为这条查询命令中的检索关键字。
在运行该脚本之前还必须把它设置为可执行的:
现在,你不用在每次运行这个脚本时都去编辑它了只需通过命令行参数,告诉它你想查找什么东西即可:
{说明} 强烈建议大家不要把这類脚本安装在公共区域里因为它们在执行时不会对参数进行安全检查,因而很容易遭遇SQL注入攻击假设有人调用类似下面的脚本发起攻擊:
此脚本的后果是会有一条DROP DATABASE
语句被注入脚本语句中,成为mysql
的输入内容如此一来,这条命令会真的被执行其后果可想而知。
本文摘自《MySQL技术内幕》(第5版)
《MySQL技术内幕》(第5版)是MySQL方面名副其实的经典著作全面介绍MySQL的基础知识以及MySQL有别于其他数据库系统的独特功能,書中特别关注如何只粘贴文本高效地使用和管理MySQL
全书由4个部分组成:第一部分集中介绍与数据库使用相关的一些基本概念,第二部分重點关注的是自己如何只粘贴文本动手编写和使用MySQL的程序第三部分主要是面向那些负责数据库管理的读者,第四部分提供了一些参考附录书中包含大量示例,详尽地演示了MySQL的各项功能特性此外,本书还为使用C语言、PHP语言和Perl语言开发数据库应用的读者提供了相关内容
本書不仅适合MySQL初学者阅读,也适合想要深入了解MySQL的数据库管理人员和开发人员参考