1.2 初识 mysql 查询
本节描述了查询的基本原则,您可以尝试熟悉 mysql 的工作原理。
下面演示了一个简单的查询,查询当前 MySQL 服务的版本和当前的日期。在 mysql>
提示行中输入以下内容,并按下 Enter:
mysql> SELECT VERSION(), CURRENT_DATE;
+-----------+--------------+
| VERSION() | CURRENT_DATE |
+-----------+--------------+
| 5.7.19 | 2017-12-18 |
+-----------+--------------+
1 row in set (0.00 sec)
mysql>
从上面的示例中,我们可以看出:
- 查询通常由一个 SQL 语句后跟一个分号(;)组成;但有一些例外情况,分号可以省略,例如:
mysql> quit
、mysql> \q
、mysql> use test
- 客户端发送查询语句到 MySQL 服务器,服务器执行语句后,并返回结果;同时显示
mysql>
提示符,等待下一个查询操作。 - mysql 以行、列的表格形式,打印输出;第一行表示列名,除第一行外,均表示结果行。通常情况下,第一行列名是数据表的列名,但如果语句中的表达式不是数据表列表名,则显示表达式本身。
- mysql 返回了查询结果的总行数以及查询执行的时间;执行时间可以粗略判断 MySQL 服务器的性能,但是这里显示的时间并不是一个准确的值,它仅仅表示的是wall clock time,即我们所说的时钟时间或墙上时钟时间,而非CPU time,它会受到诸如服务器负载和网络延迟等因素的影响。
Note
wall clock time也叫wall time,它是人们实际感觉到的从任务(进程)开始到完成的一段时间,即花费的实际物理时间。当执行一个任务(进程)时,wall time是从开始到结束真实时间的一个度量,这个时间也包括了程序延迟(如sleep)或等待资源(I/O),具体说wall time包括了CPU time、I/O time和信道延迟。
查询语句不区分大小写
以下的查询都是等同的;
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
使用查询,进行简单的数学运算
mysql> SELECT SIN(PI()/4), (4+1)*5;
+--------------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+--------------------+---------+
| 0.7071067811865475 | 25 |
+--------------------+---------+
1 row in set (0.00 sec)
同一行中执行多个查询语句,每个语句以分号结束
mysql> SELECT VERSION(); SELECT NOW();
+-----------+
| VERSION() |
+-----------+
| 5.7.19 |
+-----------+
1 row in set (0.00 sec)
+---------------------+
| NOW() |
+---------------------+
| 2017-12-18 01:52:45 |
+---------------------+
1 row in set (0.00 sec)
多行语句
当查询语句过长,可以在多行中输入查询语句;MySQL 通过查找终止分号来确定语句的结束,而不是输入行的结尾。换句话说,MySQL 接受自由格式的输入,它收集输入行,但在看到分号之前不执行她们。
mysql> SELECT user()
-> ,
-> version()
-> ;
+----------------+-----------+
| user() | version() |
+----------------+-----------+
| root@localhost | 5.7.19 |
+----------------+-----------+
1 row in set (0.00 sec)
在这个示例中,请注意在输入多行查询的第一行之后,提示符如何从 mysql>
变为>
。这表示 MySQL 没有看到完整的语句,并等待其他语句的输入,直到遇见终止分号,开始执行查询。
如果在多行查询中,您想中断或退出多行查询,可以敲入\c,并按下 Enter,退出多行查询;
mysql> SELECT user() ,
-> version()
-> \c
mysql 命令行中的提示符
提示符 | 描述 |
---|---|
mysql> | 等待新查询; |
-> |
等待多行查询中的新行; |
'> |
等待以'开始的新行; |
"> |
等待以"开始的新行; |
`> |
等待以`开始的新行; |
/*> |
等待以/*开始的新行; |
在上述的提示符 中,'>
、">
、`>
、/*>
出现在敲入的 SQL 语句缺少相对应的结束符。通常情况下采用敲入\c
来终止查询语句。
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'> '\c
mysql>