3.2 输入查询

来源:互联网 发布:经传软件 央视315 编辑:程序博客网 时间:2024/05/21 09:29

确保你连接上了 服务器,如前面章节讨论的。连接上服务器本身并没有选择任何数据库去进行应用,但是可行。此时,知道如何查询的知识比直接跳至创建表,装载数据并且从表中检索信息更重要。这个给出了输入查询的基本原则,使用几个查询,你能尝试熟悉mysql是如何工作的。

这是一个要求服务器告诉你它的版本号和当前时间的简单命令。在mysql>提示输入如下命令并按下Enter。

mysql> SELECT VERSION(), CURRENT_DATE;+--------------+--------------+| VERSION() | CURRENT_DATE |+--------------+--------------+| 5.6.1-m4-log | 2010-08-06 |+--------------+--------------+1 row in set (0.01 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.6.1-m4-log |+--------------+1 row in set (0.00 sec)+---------------------+| NOW() |+---------------------+| 2010-08-06 12:17:13 |+---------------------+1 row in set (0.00 sec)

不必全在一个行内给出一个命令,较长命令可以输入到多个行中。mysql通过寻找终止分号而不是输入行的结束来决定语句在哪儿结束。(换句话说,mysql接受自由格式的输入:它收集输入行但直到看见分号才执行。)

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

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

在这个例子中,在输入多行查询的第一行后,要注意提示符如何从mysql>变为->,这正是mysql如何指出它没见到完整的语句并且正在等待剩余的部分。提示符是你的朋友,因为它提供有价值的反馈,如果使用该反馈,将总是知道mysql正在等待什么。

如果你决定不想执行正在输入过程中的一个命令,输入\c取消它:

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

这里也要注意提示符,在你输入\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;'> '\cmysql>

提示符回到mysql>,显示mysql准备好接受一个新命令了。

`> 提示符类似于 ‘> 和”> 提示符,但表示你已经开始但没有结束以`> 开始的识别符.

知道’>和”>提示符的含义很重要,因为如果你错误地输入一个未终止的字符串,任何后面输入的行将要被mysql忽略–包括包含QUIT的行. 这可能令人相当困惑,特别是如果取消当前命令前还不知道你需要提供终止引号。

0 0
原创粉丝点击