• 查询

    查询

    像前面章节讨论一样,请确保你已经连接到了服务器。連好之后,不要在里面查询任何数据庫,当然,你也可以查。在这个时候,相比直接跳到创建表,加载数据到表,然后从中检索数据,在先对查询有一定的了解,这是非常重要的,这部分描述了查询的基本原理,使用一些查询,你可以试着了解mysql是如何工作的。

    这里有一个简单的查询例子,查询的是版本号和当前日期。在mysql命令提示符中像如下一样输入:

    1. mysql> SELECT VERSION(), CURRENT_DATE;
    2. +--------------+--------------+
    3. | VERSION() | CURRENT_DATE |
    4. +--------------+--------------+
    5. | 5.7.1-m4-log | 2012-12-25 |
    6. +--------------+--------------+
    7. 1 row in set (0.01 sec)
    8. mysql>

    这个查询描述了mysql的一些事情:

    一个查询正常情况下包含一个SQL语句,然后跟上一个分号(;)(当然也有不输入分号的例外,如QUIT,还有其他的,随后会了解到),。

    当你执行一个查询,mysql会把它发送到服务器执行并显示结果,然后打印另一个mysql>命令提示符,来为你的下一个查询作好准备。

    mysql以表格(行和列)的方式显示查询结果。第一行包含列标签。接下来的行是查询结果。列标签是你从数据庫表中提取的列的名字。如果你正在检索的不是一个表的列,而是一个表达式的值,mysql会用表达式本身来标记列。

    mysql会显示返回结果的行数和执行查询所消耗的时间,这可以给你一个服务性能的粗略显示。这些时间值不是非常准确的,因为他们表示的是时钟时间(不是CPU或机器时间),因为他们会受到诸如加载和网络延迟的因子影响。(简单起见,在接下来的例子中,“rows in set"有时没有显示)

    关键詞不区别大小写,以下查询是等价的:

    1. mysql> SELECT VERSION(), CURRENT_DATE;
    2. mysql> select version(), current_date;
    3. mysql> SeLeCt vErSiOn(), current_DATE;

    以下是另一个查询,你可以使用mysql做一个简单的计算:

    1. mysql> SELECT SIN(PI()/4), (4+1)*5;
    2. +------------------+---------+
    3. | SIN(PI()/4) | (4+1)*5 |
    4. +------------------+---------+
    5. | 0.70710678118655 | 25 |
    6. +------------------+---------+
    7. 1 row in set (0.02 sec)

    这些查询相对来说,比较短,也是单行语句。你可以在一行输入多条语句,仅仅需要在每一个语句后加上一个分号:

    1. mysql> SELECT VERSION(); SELECT NOW();
    2. +------------------+
    3. | VERSION() |
    4. +------------------+
    5. | 5.7.10-ndb-7.5.1 |
    6. +------------------+
    7. 1 row in set (0.00 sec)
    8. +---------------------+
    9. | NOW() |
    10. +---------------------+
    11. | 2016-01-29 18:02:55 |
    12. +---------------------+
    13. 1 row in set (0.00 sec)

    一个查询不需要把所有的都放一行,如此长的查询,需要放在多行不是问题,mysql决定你的语句是否结束是查找分号,而不是查找输入行的结尾。(换言之,mysql接受自行格式输入:它可以一直接受输入,直到看到分号)

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

    1. mysql> SELECT
    2. -> USER()
    3. -> ,
    4. -> CURRENT_DATE;
    5. +---------------+--------------+
    6. | USER() | CURRENT_DATE |
    7. +---------------+--------------+
    8. | jon@localhost | 2010-08-06 |
    9. +---------------+--------------+

    在这个例子中,注意到在你输入多行的第一行然后回车后,提示符是如何从mysql> 改变成->的,这告诉你,mysql还没有看到一个完整的语句,正在等待剩下的。提示符是你的朋友,因为他提供了有价值的反馈。如果你使用这个反馈,你可以一直感知到mysql正在等待。

    如果你打算取消正在输入的查询,你可以输入\c,像下面一样:

    1. mysql> SELECT
    2. -> USER()
    3. -> \c
    4. mysql>

    在这,可以注意到,在你输入\c之后,提示符切换回了mysql> 。以此提供了一个反馈,暗示已经为新的查询做好了准备。

    以下表格显示了每一个提示符所表示的含义:

    提示符 含义
    mysql> 已为新的查询作好准备
    -> 正在等待多行的下一行
    '> 正在等待以单引号开头的字符串的下一行
    "> 正在等待以双引号开头的字符串的下一行
    `> 正在等待以(`)号开头的字符串的下一行
    /*> 正在等待以注释符(/*)开头的字符串的下一行

    例如:

    1. mysql> select user()`
    2. `> `
    3. -> /*
    4. /*> */
    5. -> '
    6. '> '
    7. -> "
    8. "> "
    9. -> \c

    原文: https://strongyoung.gitbooks.io/mysql-reference-manual/content/tutorial/entering_quries.html