首先请确保您已连接到服务器,如前一节所述。接下来的操作并没有选择要使用的数据库,但是没关系。此时,更重要的是找到一些关于如何发出查询语句,而不是在创建表、将数据加载到它们中、以及从它们中检索数据。本节描述了输入查询的基本原则,使用几个查询,您可以尝试熟悉MySQL的工作原理。

    接下来的查询为:查询当前mysql服务器的版本以及当前日期

    1. mysql> select version(),current_date;
    2. +------------+--------------+
    3. | version() | current_date |
    4. +------------+--------------+
    5. | 5.7.21-log | 2018-03-30 |
    6. +------------+--------------+
    7. 1 row in set (0.00 sec)
    8. mysql>

    该查询概述了MySQL的一些事:
    查询通常由以”;”结尾的SQL语句组成(有些情况下;也可以省略,如前面的quit,后续还会学到其他的)
    在发出查询语句时,MySQL将其发送到服务器执行,并显示结果,然后打印另一个mysql提示符,表示它已准备好进行另一个查询。
    MySQL以表格的形式显示查询输出(行和列)。第一行包含列的标签。下面的行是查询结果。通常,列标签是从数据库表中提取的列的名称。如果检索表达式的值而不是表列(如刚才所示的示例),MySQL将使用表达式本身标记列。
    MySQL显示了返回的行数以及查询执行的时间,这使您对服务器性能有了大致的了解。这些值是不精确的,因为它们表示挂钟时间(不是CPU或机器时间),因为它们受服务器负载和网络延迟等因素的影响。(为了简洁起见,在本章的其余示例中有时不显示“集行”行)。

    关键字的输入不区分大小写,下面这几种情况是等效的

    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)

    你甚至可以在一行中输入多个语句。用分号结束每一个:

    mysql> SELECT VERSION(); SELECT NOW();
    +------------------+
    | VERSION()        |
    +------------------+
    | 5.7.21-log       |
    +------------------+
    1 row in set (0.00 sec)
    
    +---------------------+
    | NOW()               |
    +---------------------+
    | 2018-03-30 14:52:55 |
    +---------------------+
    1 row in set (0.00 sec)
    

    查询不需要在一行中给出所有语句,所以需要几行的冗长查询根本不是问题。MySQL通过查找终止分号来确定语句的结束位置,而不是查找输入行的结尾。换句话说,MySQL接受自由格式的输入:它收集输入行,但在看到分号之前不执行它们。

    mysql> SELECT
        -> USER()
        -> ,
        -> CURRENT_DATE;
    +----------------+--------------+
    | USER()         | CURRENT_DATE |
    +----------------+--------------+
    | root@localhost | 2018-3-30    |
    +----------------+--------------+
    

    在这个示例中,请注意在输入多行查询的第一行之后,提示符如何从MySQL>变为>。这就是MySQL如何表示它还没有看到完整的语句并等待其他语句。提示是你的朋友,因为它提供有价值的反馈。如果您使用该反馈,您就可以随时知道MySQL在等待什么。

    如果您决定不执行正在进入的查询,请通过输入 \c 取消它:

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

    在这里,也请注意提示符。在输入 \c 之后,它会切换回mysql>提供反馈,表明MySQL已经准备好进行新的查询。

    下表显示了您可以看到的每个提示,并总结了它们对MySQL处于的状态的含义。

    提示符 意义
    mysql> 准备接受新的查询
    -> 等待多行查询的下一行
    ‘> 等待下一行,等待以一个引号开始的字符串完成。
    “> 等待下一行,等待以双引号开始的字符串的完成(”)
    `> 等待下一行,等待以双引号开始的字符串的完成(`)
    /*> 等待下一行,等待以*开始的注释完成

    字符串集合中出现”> 和’>提示(另一种说法是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已准备好进行新的查询。