上上节篇幅以安装为主,上篇则只讲述术语、基础知识,因此只略微提及了调用或使用mysql所需要使用的“命令”,相信不少小伙伴都有如隔靴搔痒一般。
① 比如带给读者诸多不解了,因为你会思考:
——“mysql -p -u root -h 服务器地址”这串长长的字符到底有什么特殊的含义,竟打开了MySQL的大门?聪明的你可能早就抱着好奇心自行“摆渡”了。而答案不过是在连接mysql服务器时,应当使用的 “身份验证” 这一把钥匙罢了。
——因输入错误但尚未执行,或已执行了的语句,想取消该状态,有何解?
② 另外一个情境是,先前笔者每每登录总是需要键入相同的多个字符,如‘mysql -p -uroot -h......(此处省略更多参数)’,久而久之就对于“这些连接参数造成的重复工作”不胜其烦。既然无法跳过“身份验证”这一环节,那么能否适当减少文本的输入量呢?
本节,我们就致力解决这两个问题吧。
这里相当于是对上上节的补充,如果想将只是体系梳理完整,还请您务必这么想——因为知识就是从已知中发现未知,从而进行扩展的,对吧?
-------------------------------------------------------------------------------------------
本文的规则:黑色字体为正常步骤,红色字体为希望能引起读者的注意,笔者用意大致是出于“警示”或“引导”这两种。
本文阅读建议:因分节(一)、分节(二)介绍的知识在所有系统上通用,建议详读;而分节(三)则是面向Linux系统,建议心有余力的小伙伴可以读一下。想要对此有所了解的读者应先浏览一下大致的模块,然后根据自己的需要选择相应方法,详细看一遍后进行尝试。在这里也提一下,对于Windows系统,其实现方法是差不多的,只要将调用mysql的命令及参数整合进环境变量或.bat(批处理文件)即可,故不做过多的介绍。
本文概览:
(一)连接MySQL
(二)执行或清除已输入的SQL语句
(三)在连接MySQL上“偷懒”(选读)
若本文出现错误或有所遗漏等问题,还请读者指出,鄙人不胜感激。
-------------------------------------------------------------------------------------------
(一)连接MySQL
(1)身份验证:使用MySQL之前,需按要求提供足够的信息作为登录凭证。
调用mysql所使用的命令提示符为:mysql [option]
mysql -h 主机名 -p -u 用户名
PS: 上面的命令形式较为常见,因为至少需要指定用户名和密码(这是下限。如果在调用mysql时提供了更多的选项,往往是因为为了让mysqld响应更多的需求)。
① 关于-h:MySQL采用的是“C/S”体系结构,因此在通信前,需要先使客户端与服务器保持连接状态。有鉴于此,当我们直接在服务器上运行时,加不加-h便无所谓了,因为默认是127.0.0.1或者说是localhost嘛。(这样,通过-h来指定服务器的ip或名称就不难理解了吧。)
② 关于-p和-u:用户和密码只是您登录服务器的一个安全凭证。(试想,如果陌生人可以随意进入你家,那不就乱套了么?以此类比,也不是随随便便就可以让所有人进入数据库的。因此出于安全考虑,你说-p和-u是不是很有必要呢?)
这里需要注意的是:参照-h和-u,密码也是可以直接输入的,但密码应该“紧跟在-p后面”,如-p123456,而不是-p 123456。而-h和-u后面的内容既可以贴紧关键字也可以先空一格再输入内容。(有些小伙伴就纠结为什么?那你这样想就可以了:别人很容易就能获悉服务器名和你的账户名,但你的密码也是公开的么?它们的性质肯定不一样,因材施教呗。)
对于多用户操作系统,不建议直接在shell中输入密码。
这里还需指出,您也可以将-h 主机名换为--host=主机名,将-p换为--password=用户密码,将-u 用户名换为--user=用户名。
ps: 登录时,记得将主机名和用户名换成你自己的哟。键入上述命令并回车,你将会收到“Enter password: ”的提示,密码输入无误便可继续收到“mysql> ”,这就意味这我们连接上服务器了。
(2)终止会话:使用MySQL之后,想要退出怎么办?通常是使用完毕,
只要掌握下面命令中的其中一个,你就可以随时退出咯。
1 quit
2 exit
3 \q
(二)执行或清除已输入的SQL语句
鉴于前面已经讲过客户端链接到服务器端的内容,因此下面不再赘述。若是小伙伴们有所遗忘,还请回头翻看一下。
(1) 如何在mysql里执行或取消执行SQL语句?( 只有输入“完整”,才能被程序正确识别,就像使其有了“可执行”的标识一样 )
① 执行是事前操作:在语句的结尾处添加一个分号(;),并按下Enter键
② 中断执行是事后操作:只能借助shell的功能Ctrl+D键 或 Ctrl+C键进行强制拦截。
但要注意,在mysql中,只能用英文状态下的分号、逗号,否则还没有将其发送至mysqld,就直接先被语法解析器拦截下来了。(因为代码都是字母组合,外国先入为主对吧?)
① 分号( ; )用于语句的分隔。
和我们平时使用句号( 。)的作用一样,标志这语句的结束。只有这样,mysqld才清晰了你此次就想查询这么多的内容,是吧?
② 逗号( , )用于字段的分隔。
和我们平时使用逗号(,)的作用一样,表示这语句尚未说完,后面可添加更多的字段充当内容。
ps:对于上面所言,其实也无需特别记忆,因为后面在查询或是进行其他事务操作,我们都会经常用到。只是不经意间疏忽了而已。
除了分号( ; ),还有另外的终止语句的方法:\g、\G。且它们的用法是相同的——将其放在语句的尾部即可。
① \g 的意思是go。显示查询结果与分号( ; )相同。
② \G 会以“垂直”的方式显示查询结果,每行显示一个值。这在输出结果中,每一行包含的列数较多时尤为有用,因为受限于显示器界面的大小。缺点是不好与其他行的数据进行比较。
(2)如何在mysql里清除那些已输入了的语句?(应当注意,清除执行语句与取消执行语句的区别,您输入语句但尚未按下回车才属于前者。一旦按下回车,由于服务器响应迅速,这意味后续只能使用shell的功能Ctrl+D或Ctrl+C来对其进行取消了)
① 使用Backspace键进行回退(不通用)。但这个方法有很大的局限性,因为只有当你输入一行时尚可如此做,当输入了多行,就只能清除最下面的一行。ps:输入多行时,除了第一行的提示符为mysql> ,其他行都是-> 。
② 使用 \c 取消语句的执行(通用)。\c的意思是cancel。
(3) 实战演练:
① 使用分号( ; )和 \G作为语句的结束标志。至于\g,请读者自行尝试。
②同一行中可以置放多个语句,使用分号( ; )隔开。想不通为什么这样做可行,就联想下中文句号在同一行中是否可以使用多次即可。
ps:与创建选项文件一样,多个语句可以被存储在一个SQL脚本中,之后再利用shell的重定向功能就能执行脚本里面的语句了。在这先卖个关子,用到之时再做讲解。
(4)记不住那么多怎么办?答曰:学会观察!且看到下面第一行和最后一行那“赤裸裸的提示”:
小结:
每次执行语句,都是一次事务提交——mysql向mysqld发起了一次请求,告知要对数据库文件进行什么操作。(具体什么是事务,后面学到自会讲解。若受好奇心驱使,还请“摆渡”)
从连接服务器,到与mysql进行交互,这个过程无异于我们使用电脑浏览器查询相关信息。其中,浏览器是电脑客户端的一个代理,通过搜索引擎等一些手段可以向存储相关网页的服务器发起查询。
(三)在连接MySQL上“偷懒”(选读)
由于每次连接MySQL都需要使用相似的连接参数,如何减少重复性劳作就显得相当重要了。
(1)将常用的连接参数事先存储在主目录的一个选项文件里,据此轻松连接。
I. 如何实现:
① 首先,需要创建一个配置文件。比如利用快捷键Ctrl + Alt + T打开命令行界面,并使用vi工具进行这一步骤:
vi ~/.my.cnf
② 其次,需要在配置文件中输入好如下相关信息。按照上面的步骤,则此处应按下i键开启插入模式,并将下述的主机名、用户名、密码这几个占位符替换为你自己的:
[client]
host=主机名
user=用户名
password=密码
额外说明:选项文件中的[client]是一个选项组。它作为选项组的开始标记,表示该组名后面的所有选项都适用于所有的客户端程序。
其他选项参数可根据需要增减。比如是要连接到本地运行的mysqld服务器,则无需加入host=主机名这个参数。get到了吗?
③ 接着,保存并退出文件编辑界面——先按下:,再输入 wq。
④ 最后,将文件权限设定为仅自己可读写。
chmod 600 ~/.my.cnf
II. 如何测试:
如果你按照上面操作,那么之后在命令行界面键入mysql可直接进入会话界面的话,说明设置有效!
(2)利用shell的history命令功能,输入重复命令。
这里需要用到的命令是:感叹号字符(! ),如 !my 或 !# 均可以。
①如果使用是!#,#需要您使用数字来进行替换。但您可能需要先通过history可以查询到是第几个命令。
② 如果使用!my,要确保以“my”这两个字符足够使得shell找到以my开头的命令,我们的目标是最近调用mysql这行命令。
③ 若为上一个命令,可直接键入!!。
(3)利用shell别名或脚本定义一个mysql命令行快捷方式。
I. 别名:
这里需要用到的命令是:alias ,如alias='mysql -h主机名 -p -u用户名'。请注意alias为内建命令,因此只在当前的shell进程生效。要使其永久生效,还需将它配置到shell程序的启动文件里。若读者账户的默认sh为bash,那么就是.bashrc或.bash_profile文件了。(这里不做过多描述,感兴趣的小伙伴可以自行“摆渡”一下)
II. 脚本:
① 首先,使用vi工具创建一个以.sh为后缀的文件。这里将文件名命名为要打开的数据库的名称。
vi 数据库名.sh
② 其次,按下i键,并输入如下内容(注意将主机名、用户名、数据库名换成你自己的):
#! /bin/bash
exec mysql-h 主机名 -p -u 用户名 数据库名
③ 最后,将文件设置为可执行文件。
chmod +x 数据库名.sh
在命令行中输入该文件名称(注意:需要切换到文件所在目录),即可启动mysql并连接到相关的数据库了。大功告成!