确保您已连接到服务器,如前一节所述。这样做本身并不会选择任何数据库来处理,但这没关系。在这一点上,找出一些关于如何发出查询的问题比创建表格,将数据加载到表格以及从中检索数据更重要。本节介绍输入查询的基本原则,使用几个查询可以尝试熟悉mysql如何 工作。
这是一个简单的查询,要求服务器告诉你它的版本号和当前日期。按照mysql>
提示输入,如下所示,然后按Enter键:
mysql> SELECT VERSION(), CURRENT_DATE;
+-----------+--------------+
| VERSION() | CURRENT_DATE |
+-----------+--------------+
| 5.8.0-m17 | 2015-12-21 |
+-----------+--------------+
1 row in set (0.02 sec)
mysql>
这个查询说明了有关mysql的几件事情 :
查询通常由一个SQL语句和一个分号组成。(有些例外可以省略分号
QUIT
,前面提到的是其中的一个,稍后我们会找到其他的。)当您发出查询时,mysql会将其发送到服务器以供执行并显示结果,然后打印另一个
mysql>
提示以指示它已准备好进行其他查询。mysql以表格形式(行和列)显示查询输出。第一行包含列的标签。以下行是查询结果。通常,列标签是您从数据库表中获取的列的名称。如果您正在检索表达式的值而不是表格列(如上例所示), mysql会使用表达式本身标记列。
mysql会显示返回的行数和查询执行的时间,这会让您大致了解服务器的性能。这些值是不精确的,因为它们代表挂钟时间(而不是CPU或机器时间),并且因为它们受到服务器负载和网络延迟等因素的影响。(为了简洁起见, 本章其余示例中有时不会显示“行中的行 ”)。
关键字可以输入任何信箱。以下查询是等效的:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
这是另一个查询。它演示了你可以使用 mysql作为一个简单的计算器:
mysql> SELECT SIN(PI()/4), (4+1)*5;
+------------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+------------------+---------+
| 0.70710678118655 | 25 |
+------------------+---------+
1 row in set (0.02 sec)
迄今为止显示的查询是相对较短的单行语句。你甚至可以在一行中输入多个语句。只需用分号结尾:
mysql> SELECT VERSION(); SELECT NOW();
+-----------+
| VERSION() |
+-----------+
| 5.8.0-m17 |
+-----------+
1 row in set (0.00 sec)
+---------------------+
| NOW() |
+---------------------+
| 2015-12-21 14:06:10 |
+---------------------+
1 row in set (0.00 sec)
查询不需要在一行中全部提供,因此需要多行的冗长查询不成问题。 mysql通过查找终止分号来确定语句的结束位置,而不是查找输入行的结尾。(换句话说,mysql 接受*格式的输入:它收集输入行,但直到看到分号时才执行它们。)
这是一个简单的多行声明:
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+---------------+--------------+
| USER() | CURRENT_DATE |
+---------------+--------------+
| jon@localhost | 2015-12-21 |
+---------------+--------------+
在这个例子中,请注意提示符从 mysql>
对->
您输入一个多行查询的第一行后。这就是mysql如何 表示它尚未看到完整的声明并正在等待其余部分。提示是你的朋友,因为它提供了有价值的反馈。如果你使用这个反馈,你总是可以知道mysql 正在等待什么。
如果您决定不想执行正在输入的查询,请通过键入\c
以下内容来取消它 :
mysql> SELECT
-> USER()
-> \c
mysql>
在这里,请注意提示。它会mysql>
在您键入之后切换回来 \c
,提供反馈以指示mysql已准备好进行新的查询。
下表显示了您可能会看到的每个提示,并总结了它们对于mysql所处状态的含义 。
提示 | 含义 |
---|---|
mysql> |
准备好新的查询 |
-> |
等待多行查询的下一行 |
'> |
等待下一行,等待完成以单引号(' )开头的字符串
|
"> |
等待下一行,等待以双引号开头的字符串完成(" )
|
`> |
等待下一行,等待完成以反引号开头的标识符(` )
|
/*> |
等待下一行,等待完成以开始的评论 /*
|
当您打算在单行上发出查询时,多行语句通常会意外发生,但忘记了终止分号。在这种情况下,mysql 等待更多的输入:
mysql> SELECT USER()
->
如果这发生在你身上(你认为你已经输入了一个声明,但唯一的回应是->
提示),很可能mysql正在等待分号。如果你没有注意到提示告诉你什么,你可能会在那里呆一会儿,然后才意识到你需要做什么。输入一个分号来完成语句,然后mysql 执行它:
mysql> SELECT USER()
-> ;
+---------------+
| USER() |
+---------------+
| jon@localhost |
+---------------+
在'>
和">
字符串集合(说,MySQL是在等待一个字符串完成的另一种方式)中的提示信息出现。在MySQL中,你可以编写包含字符'
或 "
字符的字符串(例如'hello'
或"goodbye"
),并且 mysql允许你输入跨越多行的字符串。当您看到'>
或 ">
提示时,这意味着您输入的行中包含以一个'
或"
引号字符开头的字符串,但尚未输入用于终止该字符串的匹配引号。这通常表示您无意中遗漏了一个引号字符。例如:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '>
如果您输入此SELECT
语句,然后按Enter并等待结果,则不会发生任何情况。不要想知道为什么这个查询需要这么长时间,注意'>
提示提供的线索。它告诉你,MySQL希望看到未终止的字符串的其余部分。(您是否在语句中看到错误?该字符串'Smith
缺少第二个单引号。)
在这一点上,你做什么?最简单的事情就是取消查询。然而,你不能只输入\c
这种情况,因为mysql将它解释为它正在收集的字符串的一部分。相反,输入结束引号字符(所以mysql知道你已经完成了字符串),然后键入\c
:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30; '> '\c
mysql>
提示变回mysql>
,表示mysql已准备好进行新的查询。
该`>
提示类似于 '>
和">
提示,但表示你已经开始但尚未完成反引号引用的标识符。
重要的是要知道什么是重要的'>
, ">
和`>
提示表示,因为如果你错误地输入一个未终止的字符串,你输入的任何进一步线似乎被忽视 MySQL的 -包括含线 QUIT
。这可能会令人困惑,特别是如果您不知道在取消当前查询之前需要提供终止报价。
本文翻译由学什么网翻译