- 查询
查询
像前面章节讨论一样,请确保你已经连接到了服务器。連好之后,不要在里面查询任何数据庫,当然,你也可以查。在这个时候,相比直接跳到创建表,加载数据到表,然后从中检索数据,在先对查询有一定的了解,这是非常重要的,这部分描述了查询的基本原理,使用一些查询,你可以试着了解mysql是如何工作的。
这里有一个简单的查询例子,查询的是版本号和当前日期。在mysql命令提示符中像如下一样输入:
mysql> SELECT VERSION(), CURRENT_DATE;+--------------+--------------+| VERSION() | CURRENT_DATE |+--------------+--------------+| 5.7.1-m4-log | 2012-12-25 |+--------------+--------------+1 row in set (0.01 sec)mysql>
这个查询描述了mysql的一些事情:
一个查询正常情况下包含一个SQL语句,然后跟上一个分号(;)(当然也有不输入分号的例外,如QUIT,还有其他的,随后会了解到),。
当你执行一个查询,mysql会把它发送到服务器执行并显示结果,然后打印另一个mysql>命令提示符,来为你的下一个查询作好准备。
mysql以表格(行和列)的方式显示查询结果。第一行包含列标签。接下来的行是查询结果。列标签是你从数据庫表中提取的列的名字。如果你正在检索的不是一个表的列,而是一个表达式的值,mysql会用表达式本身来标记列。
mysql会显示返回结果的行数和执行查询所消耗的时间,这可以给你一个服务性能的粗略显示。这些时间值不是非常准确的,因为他们表示的是时钟时间(不是CPU或机器时间),因为他们会受到诸如加载和网络延迟的因子影响。(简单起见,在接下来的例子中,“rows in set"有时没有显示)
关键詞不区别大小写,以下查询是等价的:
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.7.10-ndb-7.5.1 |+------------------+1 row in set (0.00 sec)+---------------------+| NOW() |+---------------------+| 2016-01-29 18:02:55 |+---------------------+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> select user()``> `-> /*/*> */-> ''> '-> ""> "-> \c
原文: https://strongyoung.gitbooks.io/mysql-reference-manual/content/tutorial/entering_quries.html
