[译] MySQL参考手册·上篇

全篇共 2810 字。按500字/分钟阅读,预计用时 5.6 分钟。页面总浏览量 11 次,今日浏览量 2 次。

本篇文章将介绍MySQL的相关知识,通过展示如何借助mysql客户端用程序指令创建和使用一个简单的数据可。mysql(MySQL命令行工具)是一个交互式程序指令工具,你可以借此连接到MySQL数据库、执行查询并且浏览查询结果。mysql允许你使用批处理模式:预先将查询指令存入文件内,然后告诉mysql来执行文件的内容。两种使用mysql的方法在文本中都会介绍到。

> mysql --help

有时候你需要查看mysql都为我们提供了那些参数,只需要使用 --help 参数得到mysql的参数列表。在本面文章正式开始之前,你需要确保mysql已经正确的安装到了你的机器上并且可以连接到MySQL服务。

目录

  1. 建立和断开数据库服务连接
  2. 查询

1. 建立和断开数据库服务连接

为了成功连接到MySQL服务,你通常需要提供MySQL用户名和密码,如果MySQL服务不是在执行登录命令的主机上,你还需要制定一个远程主机名。

> mysql -h host -u user -p
Enter password: ******

host和user代表运行MySQL服务的主机名和MySQL账号的用户名,当mysql提示你需要输入密码时,键入密码即可。

如果上一步起作用了,你将看到一些提示信息,并且进入mysql上下文。

> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.7.21-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql>表示mysql已经准备好你来键入SQL语句。

如果你登录MySQL的机器和运行MySQL服务的在同一台机器上,你可以省略主机,简化代码:

> mysql -u user -p

然而,如果你在尝试登录时,得到一个错误的提示信息,类似于:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

这意味着MySQL服务没有运行,你需要先启动mysql服务。

一些MySQL服务允许了用户以匿名(无用户名)的方式连接到本地运行的服务。你可以使用以下无任何参数的指令:

> mysql

在你成功与MySQL服务建立连接后,你可以使用 QUIT (或者\q)随时断开连接连接:

mysql> QUIT
Bye

在Unix系统中,你也可以通过键入 Control+D 断开连接。本文以下例子中,假设你已经连接到了MySQL服务。

2. 查询

确保你已经连接到MySQL服务,以下是一个查询MySQL服务版本号和当前数据:

MySQL数据库参考手册中文 - 陈帅华

针对上方的例子,我作如下阐释:

一条查询语句由一个SQL语句和紧随其后的分号组成(不过有些例外情况,分号允许被省略。比如 QUIT 命令)。

当你触发一条查询语句,mysql将其发送到server并执行随后展示出查询结果,之后会打印出另一个 mysql> 提示,表示可以继续输入查询语句了。

mysql查询结果将以类似表格的形式展示(行与列)。第一行包含列的标签,随后的行即是查询结果。通常的,列标签为你查询的数据库表的字段的名字。

mysql展示了一共查询了多少行,还有查询时长。这些信息给你提升查询语句的性能提供了建议。这些性能数据是不精确的,因为他们只是代表了这一过程的时间(不代表CPU或者机器时间),而这一过程的时长受服务加载和网络延迟的因素影响。

键入的查询语句是大小写不敏感的,以下查询语句是等价的。

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

如下为另一个查询语句,这示范了你可以使用mysql做简单的计算:

MySQL数据库参考手册中文 - 陈帅华

到现在为止,所有的查询语句都是简短的、单行的语句。你可以在单行中键入多条查询语句。只需要在每条语句后加上分号:

MySQL数据库参考手册中文 - 陈帅华

一条查询语句不需要总是在单行上书写,一个很长的查询语句使得折行成为必要的需求。mysql会识别分号作为一条单独的查询语句,如果mysql没有识别到分号则不会执行查询语句。

以下为一个多行语句:

MySQL数据库参考手册中文 - 陈帅华

在这个例子中,注意提示信息是如何在你多行的第一行时从 mysql> 变成 -> 的,这个缩进表示一个没有完成的语句,正在等待用户的输入。这个提示时你的朋友,因为它提供了可用的回调接口。如果你想使用这一回调,你需要知道mysql正在等待用户输入什么。

如果你在未完成的语句键入完毕之前决定不想要执行了,键入 \c 取消这一语句。

MySQL数据库参考手册中文 - 陈帅华

下方表单列出了每一个你会在mysql看到的提示信息。

有些时候因为粗心忘记写分号,而意外的产生了多行的情况,这是mysql会等待你的继续输入:

MySQL数据库参考手册中文 - 陈帅华

如果你也遇到了这种情况,可能是因为mysql正在等待你的分号。你只需要随即输入一个分号即可结束这条执行语句,并且mysql会开始执行这条语句:

MySQL数据库参考手册中文 - 陈帅华

'> 和 "> 提示经常由于字符集的文字而发生(换句话说,MySQL等待你完成一次字符串的输入),在MySQL 中,你可以使用单引号和双引号将字符串包裹起来(比如 ‘hello’ 或者 “goodbye” ),并且mysql允许你跨越多行书写一串字符串,当你看到 '> 和 "> 的提示信息时,这意味着你刚才输入的哪一行指令中有以单引号或双引号开头的字符串,但是mysql没有找到成对的作为结结束的单引号或双引号。这只是因为你不小心造成的。

MySQL数据库参考手册中文 - 陈帅华

如果你键入查询语句,然后回车等待MySQL的返回结果,发现什么也没有返回,你会想知道为什么这次查询耗费如此长的时间,此时你应该留意到 '> 这一提示,这表明mysql期望看到成对的单引号或者双引号(你也遇到类似的问题了咩? 字符串 'Smith 缺少了 ’ 来结束这个字符串)。

这是,你应该怎么办呢?最简单的办法就是结束本次查询,然而,你不能像上边介绍到的使用 \c ,因为mysql将 \c这一命令理解为仍然是字符串的一部分,正确的做法是,输入闭合引号(这样mysql就知道了你已经完成了字符串的输入),紧接着再输入 \c ,如此一来,便可以结束本次查询:

MySQL数据库参考手册中文 - 陈帅华

这时,提示信息又变成了 mysql> ,这表示mysql已经准备好你输入新的查询语句了。

区分 `> 和 '> 还有 "> 很重要,因为如果你因为没有闭合引号而犯了错误,任何新的一行都会等待你输入闭合引号,其他所有的特殊指令都会被认为是字符串的一部分而被忽略掉它原本的作用(比如输入 QUIT 也会无效)。

MySQL数据库参考手册中文 - 陈帅华

发布日期 » 2017年9月15日 周五
翻译计划 » 本篇为陈帅华翻译。
Airglass.js核心库
JavaScript核心概念
硬件编程、Arduino
文档翻译计划
微信开发
前端脚手架
运维
可视化
生活自有“道”理
视觉设计、用户体验
陈帅华的微信二维码