MySQL 输入查询

总结

SQL 语句以 “;” 结尾,出现不出结果的情况,优先检查是否输入分号。

’ > 表示 缺少 ' 单引号。

” > 表示 缺少 “ 双引号。

本节介绍了输入查询的基本原理,您可以尝试使用几种查询来熟悉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()  |
+-----------	+
| 8.0.13     |
+-----------	+
1 row in set (0.00 sec)

+---------------------	+
| NOW()                |
+---------------------	+
| 2018 -08 -24 00:56:40  |
+---------------------	+
1 row in set (0.00 sec)

一个查询不必全都给定,因此需要几行的冗长查询不是问题。mysql 通过查找终止分号(而不是通过输入行的末尾)来确定语句的结尾。(换句话说,mysql 接受自由格式的输入:它收集输入行,但是直到看到分号时才执行它们。)

这是一个简单的多行语句:

mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+---------------	+--------------	+
| USER()         | CURRENT_DATE  |
+---------------	+--------------	+
| jon@localhost  | 2018 -08 -24    |
+---------------	+--------------	+

在此示例中,请注意在输入多行查询的第一行后,提示从 mysql>变为的方式 ->这就是mysql 表示尚未看到完整语句并正在等待其余语句的方式。提示是您的朋友,因为它提供了宝贵的反馈。如果使用该反馈,则始终可以知道mysql正在等待什么。

如果您决定不想执行输入过程中的查询,请输入以下命令来取消它\c

mysql> SELECT
-> USER()
-> \c
mysql>

在这里,也请注意提示。mysql> 键入后 \c,它会切换回 mysql>,提供反馈以指示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。这可能会造成混乱,尤其是在您不知道需要提供终止报价才能取消当前查询之前。

注意

从现在开始,其多行语句将在没有辅助(->或他)提示的情况下编写,以使复制和粘贴语句更容易进行尝试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值