相关文件10bet官方网站 下载本手册 本手册摘录

3.2输入查询

如前一节所述,确保已连接到服务器。这样做本身并不会选择任何要使用的数据库,但这是可以的。在这一点上,了解如何发出查询比直接创建表、将数据加载到表中以及从表中检索数据更重要。本节介绍了输入查询的基本原则,您可以尝试使用几个查询来熟悉如何输入查询mysql数据库作品。

下面是一个简单的查询,它要求服务器告诉您它的版本号和当前日期。按如下所示输入mysql>提示并按Enter键:

mysql>选择版本(),当前日期;+------------+------------+|VERSION()|当前|日期|+------------+------------+| 5.8.0-m17 | 2015-12-21 |+------------+------------+1行(0.02秒)mysql>

这个查询说明了mysql数据库:

  • 查询通常由SQL语句和分号组成(有些例外情况下可以省略分号。退出前面提到的,就是其中之一。我们稍后再联系其他人。)

  • 发出查询时,mysql数据库将其发送到服务器执行并显示结果,然后打印另一个结果mysql>提示以指示它已准备好进行另一个查询。

  • mysql数据库以表格形式(行和列)显示查询输出。第一行包含列的标签。下面的行是查询结果。通常,列标签是从数据库表中获取的列的名称。如果检索的是表达式的值而不是表列的值(如刚刚显示的示例所示),mysql数据库使用表达式本身标记列。

  • mysql数据库显示返回了多少行以及执行查询所用的时间,这使您大致了解服务器性能。这些值是不精确的,因为它们表示挂钟时间(而不是CPU或机器时间),并且受服务器负载和网络延迟等因素的影响(为简洁起见集合中的行在本章剩下的示例中,有时不显示行。)

关键字可以用任何字母输入。以下查询是等效的:

mysql>选择版本(),当前日期;mysql>选择版本(),当前日期;mysql>选择版本(),当前日期;

这是另一个问题。它表明你可以使用mysql数据库作为一个简单的计算器:

mysql>选择SIN(PI()/4),(4+1)*5;+----------------+-----------+|SIN(PI()/4)|(4+1)*5 |+----------------+-----------+| 0.70710678118655 | 25 |+-----------+-----------+1行(0.02秒)

迄今为止显示的查询都是相对较短的单行语句。您甚至可以在一行中输入多个语句。只需用分号结尾:

mysql>选择版本();现在选择();+------------+|版本()|+----------------+| 8.0.13 |+----------------+一行集合(0.00秒)+----------------+|现在()|+----------------+| 2018-08-24 00:56:40 |+----------------+一行集合(0.00秒)

一个查询不需要在一行中给出全部内容,因此需要几行的冗长查询不是问题。mysql数据库通过查找终止分号而不是输入行的结尾来确定语句结束的位置(换句话说,mysql数据库接受自由格式输入:它收集输入行,但在看到分号之前不执行它们。)

下面是一个简单的多行语句:

mysql>选择->用户()->,->当前日期;+----------------+----------------+\USER()|当前|日期|+------------+------------+|jon@localhost | 2018-08-24 | +---------------+--------------+

在本例中,请注意提示是如何从mysql>->输入多行查询的第一行之后。这是怎么回事mysql数据库指示它尚未看到完整的语句,正在等待其余语句。提示是你的朋友,因为它提供了有价值的反馈。如果你使用这些反馈,你可以随时知道mysql数据库正在等待。

如果您决定不执行正在输入的查询,请通过键入\c级:

mysql>选择->用户()->\c mysql>

这里,也请注意提示。它切换回mysql>你打字之后\c级,提供反馈以表明mysql数据库已准备好进行新查询。

下表显示了您可能看到的每个提示,并总结了这些提示对于所处状态的含义mysql数据库是在。

提示 意义
mysql> 准备进行新查询
-> 正在等待多行查询的下一行
'> 等待下一行,等待以单引号开始的字符串的完成(')
"> 等待下一行,等待以双引号开头的字符串的完成(")
`> 等待下一行,等待以反勾号开始的标识符的完成(`)
/*> 等待下一行,等待以开头的评论完成/*

当您打算在一行上发出查询,但忘记了终止分号时,通常会意外地出现多行语句。在这种情况下,mysql数据库等待更多输入:

mysql>选择用户()->

如果这种情况发生在你身上(你认为你已经输入了一个语句,但唯一的反应是->提示),很可能mysql数据库正在等待分号。如果你没有注意到提示在告诉你什么,你可能会在那里坐一会儿才意识到你需要做什么。输入分号以完成语句,然后mysql数据库执行它:

mysql>选择用户()->;+----------------+|用户()|+----------------+|jon@localhost | +---------------+

这个'>">在字符串收集过程中会出现提示(另一种说法是MySQL正在等待字符串的完成)。在MySQL中,您可以编写由'"字符(例如,'你好'“再见”),和mysql数据库用于输入跨多行的字符串。当你看到'>">提示,这意味着您输入了一行,其中包含以'"引号字符,但尚未输入终止字符串的匹配引号。这通常表示您无意中遗漏了引号字符。例如:

mysql>从我的表中选择*,其中name='Smith AND age<30;'>

如果你输入这个选择声明,然后按输入等待结果,什么也没发生。与其想知道为什么这个查询需要这么长时间,不如注意'>提示。它告诉你mysql数据库期望看到未终止字符串的其余部分(你看到陈述中的错误了吗?绳子“史密斯缺少第二个单引号。)

在这一点上,你怎么办?最简单的是取消查询。但是,您不能只键入\c级在这种情况下,因为mysql数据库将其解释为正在收集的字符串的一部分。相反,请输入右引号字符(所以mysql数据库知道你已经完成了字符串),然后键入\c级:

mysql>从my_表中选择*,其中name='Smith AND age<30;'>'\c mysql>

提示变回mysql>,表示mysql数据库已准备好进行新查询。

这个`>提示类似于'>">提示,但表示您已开始但未完成反勾引号标识符。

重要的是要知道'>,">,和`>提示意味着,因为如果您错误地输入了一个未终止的字符串,您输入的任何其他行都会被忽略mysql数据库-包括一行包含退出. 这可能会很混乱,特别是如果您不知道需要在取消当前查询之前提供终止报价。

注意

从这一点开始,多行语句是在没有辅助语句的情况下编写的(->或其他)提示,以便更轻松地复制和粘贴语句以供自己尝试。