从零开始学MySQL(二)
上上节篇幅以安装为主,上篇则只讲述术语、基础知识,因此只略微提及了调用或使用mysql所需要使用的“命令”,相信不少小伙伴都有如隔靴搔痒一般。
① 比如带给读者诸多不解了:
——因为你会思考,这串长长的字符到底有什么特殊的含义,竟打开了MySQL的大门?聪明的你可能早就抱着好奇心去“摆渡”一下了。而答案不过是在连接mysql服务器时,应当使用的 “身份验证” 这一把钥匙罢了。
——要是输入错误,对于尚未执行或执行了的语句,有什么快捷的方法可以直接取消已经输入的、或处于执行状态的语句呢?
② 另外一个情境是,先前笔者每每登录总是需要键入相同的多个字符,久而久之就对于“这些连接参数造成的重复工作”不胜其烦。既然无法跳过“身份验证”这一环节,如‘mysql -p -uroot -h......(此处省略更多参数)’,那么有没有什么好的方法可以减少文本的输入量呢?
本节,我们就致力解决这两个问题吧。
-------------------------------------------------------------------------------------------
本文的规则:黑色字体为正常步骤,红色字体为希望能引起读者的注意,笔者用意大致是出于“警示”或“引导”这两种。
本文阅读建议:因分节(一)、分节(二)介绍的知识在所有系统上通用,建议详读;而分节(三)则是面向Linux系统,建议心有余力的小伙伴可以读一下。想要对此有所了解的读者应先浏览一下大致的模块,然后根据自己的需要选择相应方法,详细看一遍后进行尝试。在这里也提一下,对于Windows系统,其实现方法是差不多的,只要将调用mysql的命令及参数整合进环境变量或.bat(批处理文件)即可,故不做过多的介绍。
本文概览:
(一)连接MySQL
(二)执行或清除已输入的SQL语句
(三)在连接MySQL上“偷懒”(选读)
若本文出现错误或有所遗漏等问题,还请读者指出,鄙人不胜感激。
-------------------------------------------------------------------------------------------
(一)连接MySQL
这里相当于是对上上节的补充,如果想将知识体系梳理完整,还请您务必这么想。因为知识就是从已知中发现未知,从而进行扩展的,对吧?
(1)使用MySQL之前,需要提供足够的信息作为“身份验证”的钥匙。
这里开始介绍,调用mysql所使用的命令提示符,作为:mysql [option]
mysql -h 主机名 -p -u 用户名
当然,上面该命令形式比较常见,通常至少需要指定用户名和密码(这是下限。如果在调用mysql时提供。了更多的选项,往往是因为面临更多的需求)。
① 关于-h:MySQL采用的是“C/S”体系结构,因此我们在进行查询之前,需要先通过客户端去连接服务器。自然而然地,通过-h来指定服务器的ip或名称就不难理解了吧。有鉴于此,当我们在本地的服务器上运行时,加不加-h便无所谓了,因为默认是127.0.0.1或者说是localhost嘛。
② 关于-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之后:连接到服务器之后或是使用完毕,想终止会话怎么办?
只要掌握下面命令中的其中一个,你就可以随时退出咯。
quit
exit
\q
(二)执行或清除已输入的SQL语句
鉴于前面已经讲过客户端链接到服务器端的内容,因此下面不再赘述。若是小伙伴们有所遗忘,还请回头翻看一下。
(1) 如何在mysql里执行或取消执行SQL语句?( 只有输入“完整”,才能被程序正确识别,就像使其有了“可执行”的标识一样 )。
① 执行是事前操作:在语句的结尾处添加一个分号(;),并按下Enter键 ② 中断执行是事后操作:只能借助shell的功能Ctrl+D键 或 Ctrl+C键进行强制拦截。
这样,mysql就向mysqld发起了一次请求。这个过程与我们使用电脑连接上网络,打开浏览器进入必应搜索首页,在搜索框中输入想要搜索的内容,再点击搜索按钮或直接回车是一致的,对吧?其中,我们可以将电脑视为客户端,浏览器只是客户端的一个代理,而必应搜索引擎在这里就会通过一些手段向相关的服务器发起查询了。输入想要搜索的内容和点击搜索按钮或回车就相当于发起了一次事务(具体什么是事务,后面学到自会讲解。若受好奇心驱使,还请“摆渡”)。
ps:对于下面其实也无需特别记忆,因为后面在查询或是进行其他事务操作,我们都会经常用到。只是不经意间疏忽了而已。
① 分号( ; )用于语句的分隔。 和我们平时使用句号( 。)的作用一样,标志这语句的结束。只有这样,mysqld才清晰了你此次就想查询这么多的内容,是吧? ② 逗号( , )用于字段的分隔。 和我们平时使用逗号(,)的作用一样,表示这语句尚未说完,后面可添加更多的字段充当内容。
注意,在mysql中,只能用英文状态下的分号、逗号,否则还没有将其发送至mysqld,就直接先被语法解析器拦截下来了。(代码是字母组合的对吧,)
除了分号( ; ),还有另外的终止语句的方法:\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上“偷懒”(选读)
由于每次连接MySQL都需要重复使用相似的连接参数,,如何“偷懒”。
(1)将这些连接参数事先存储在主目录的一个选项文件里。
I. 如何实现:
① 首先,需要创建一个配置文件。比如利用快捷键Ctrl + Alt + T打开命令行界面,并使用vi工具进行这一步骤:
vi ~/.my.cnf
② 其次,需要在配置文件中输入好如下相关信息。按照上面的步骤,则此处应按下 i 键开启插入模式,并将下述的主机名、用户名、密码这几个占位符替换为你自己的:
[client]
host=主机名
user=用户名
password=密码
额外说明:选项文件中的[client]是一个选项组。它作为选项组的开始标记,表示该组名后面的所有选项都适用于所有的客户端程序。
其他选项参数可根据需要增减。比如是要连接到本地运行的mysqld服务器,则无需加入host=主机名这个参数。get到了吗?
③ 接着,保存并退出文件编辑界面。先按下 : ,再输入 wq 。
④ 最后,将文件权限设定为仅自己可读写。
chmod ~/.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并连接到相关的数据库了。大功告成!
从零开始学MySQL(二)的更多相关文章
- 从零开始学MySQL(四)
上节连接:https://www.cnblogs.com/RajXie/p/10880809.html 上节说到,在创建表的同时,需要给出列的定义.列的定义可展开如下: 列名 列的数据类型 列的一些其 ...
- 从零开始学MySQL(三)
经过上两节的洗礼,我们能够连接上服务器,并成功地进入与mysql交互的会话中了.那么现在就可以发起SQL语句,让服务器来执行它了!这听起来很酷吧?接下来,我们开始学习MySQL的相关知识. 本文概览: ...
- 从零开始学MySQL(一)
如果您浏览过许多IT类的招聘职位,那么掌握数据库技能的重要性便不言自明了.因JAVA常常与MySQL所挂钩,因此兴起了写博客记载学习的念头,盼与君共勉.然,在进行MySQL语法的学习之前,我们无不面临 ...
- Java从零开始学十二(构造方法)
一.构造方法 构造方法的主要目的是为类中的属性初始化 二.构造方法的定义格式 class 类名称{ 访问权限 类名称(类型1 参数1,类型2 参数2,…){ 程序语句 ; … // 构造方法没有 ...
- 从零开始学JavaScript二(基本概念)
基本概念 一.区分大小写 在ECMAScript中的一切(变量.函数名.操作符)都是区分大小写的. 如变量名test和Test分别表示两个不同的变量, 二.标识符 所谓标识符,就是指变量.函数.属性的 ...
- 从零开始学算法---二叉平衡树(AVL树)
先来了解一些基本概念: 1)什么是二叉平衡树? 之前我们了解过二叉查找树,我们说通常来讲, 对于一棵有n个节点的二叉查找树,查询一个节点的时间复杂度为log以2为底的N的对数. 通常来讲是这样的, 但 ...
- 从零开始学Linux[二]:常用操作:用户组、进程、网络、ssh
摘要:Linux基础学习:创建用户组和用户.软件包管理.磁盘管理.进程管理.前后台进程的切换.网络配置.浏览网页.远程登录ssh 第一节,主要介绍一些简单命令,这节介绍一些日常操作. 1.创建用户组和 ...
- 从零开始学Python 二
上一章我们已经安装好了Python环境,并且写出了第一个Python程序.下面我们接着继续学习.首先,来分析下上一章我们写的代码. 我们最初的目的是为了可以输出一串有意义的文字,最终选择了英文语句“h ...
- 从零开始学安全(二十七)●利用Nmap对防火墙,IDS,IPS 进行欺骗
先介绍什么是防火墙 ids 并联 ips 串联 来看我们nmap 命令
随机推荐
- 网络1911、1912 C语言第1次作业批改总结
一.评分规则 重点检查大家代码规范,变量名.大括号换行.缩进等发现不规范倒扣3分. 助教会进PTA查看大家代码的提交列表,发现不规范或抄袭,均扣分 每次作业完成后,至少邀请3个同学点评. 原作业地址: ...
- PHP CI 框架初识(一)
CodeIgniter 是一个简单快速的PHP MVC框架.EllisLab 的工作人员发布了 CodeIgniter.CodeIgniter 是一套小巧但功能强大的.给 PHP 网站开发者使用的 W ...
- [学习笔记] CNN与RNN方法结合
CNN与RNN的结合 问题 前几天学习了RNN的推导以及代码,那么问题来了,能不能把CNN和RNN结合起来,我们通过CNN提取的特征,能不能也将其看成一个序列呢?答案是可以的. 但是我觉得一般直接提取 ...
- spark 源码编译 standalone 模式部署
本文介绍如何编译 spark 的源码,并且用 standalone 的方式在单机上部署 spark. 步骤如下: 1. 下载 spark 并且解压 本文选择 spark 的最新版本 2.2.0 (20 ...
- shell高级-----正则表达式
正则表达式概述 正则表达式是一种定义的规则,Linux工具可以用它来过滤文本. 基础正则表达式 纯文本 [root@node1 ~]# echo "this is a cat" | ...
- php array function
说明:不特殊说明都支持php4,5,7 参考:https://www.php.net/manual/zh/ref.array.php is_array ( mixed $var ) : bool ...
- ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file
完整的错误信息如下: ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: ...
- BS架构和CS架构
B:browser 浏览器 S:server 服务器 C:client 客户端 BS:浏览器和服务器的关系,通过浏览器来访问服务器.比如:新浪.百度.等等. 优点:只要有浏 ...
- enumerable 可枚举 属性
一个对象的可枚举属性会在for...in中被访问到 (或是类似的迭代方法, Object.keys() 如果一个属性不是可枚举的,循环会忽略这个属性 var obj = { key: 'val' }; ...
- Linux从一个服务器拷贝文件到另一个服务器上
***复制文件夹到另外一个服务器scp -r tmp root@114.215.80.12:/work/temp输入密码 scp -r customer root@114.215.80.12:/hom ...