Skip to main content

MySQL Select

通常,使用SELECT语句从数据库中的表中选择数据:

SELECT select_list
FROM table_name;

MySQL不需要FROM子句。这意味着您可以使用SELECT语句,而不使用FROM子句,如下所示:

SELECT select_list;

下面是一个简单的例子:

SELECT 1 + 1;

输出

+-------+
| 1 + 1 |
+-------+
| 2 |
+-------+
1 row in set (0.00 sec)

MySQL有很多内置函数,比如字符串、日期和数学函数。您可以使用SELECT语句来执行这些函数。

以下示例返回MySQL服务器的当前日期和时间:

SELECT NOW();

输出

+---------------------+
| NOW() |
+---------------------+
| 2021-07-26 08:08:02 |
+---------------------+
1 row in set (0.00 sec)

NOW()函数的作用是:返回运行MySQL服务器的当前日期和时间。NOW()函数没有任何参数。调用它,只需要在函数名后面加括号()。

如果函数有参数,则需要向其传递参数。例如,将字符串连接成一个字符串,可以使用CONCAT()函数:

SELECT CONCAT('John',' ','Doe');

输出

+--------------------------+
| CONCAT('John',' ','Doe') |
+--------------------------+
| John Doe |
+--------------------------+
1 row in set (0.00 sec)

CONCAT()函数接受一个或多个字符串,并将它们连接成单个字符串。

dual表

有时,您仍然需要使用FROM子句,但不想引用任何实际的表。在这种情况下,可以在FROM子句中使用dual表:

SELECT select_list
FROM dual;

dual是虚拟表,不是实际存在的表。

当您需要SELECT语句中的其他子句,dual也是必需的。

如果没有FROM子句,SELECT语句将无效。

列别名简介

默认情况下,MySQL使用SELECT子句中指定的表达式作为结果集的列名。要更改结果集的列名,可以使用列别名:

SELECT expression AS column_alias;

要为列指定别名,请将AS关键字放在表达式后面,后跟列别名。AS关键字是可选的,因此下面的写法同样是对的:

SELECT expression column_alias;

比如

SELECT CONCAT('John',' ','Doe') AS name;

输出

+----------+
| name |
+----------+
| John Doe |
+----------+
1 row in set (0.00 sec)

如果列别名包含空格,则需要将其放在引号内,如下所示:

SELECT CONCAT('Jane',' ','Doe') AS 'Full name';

输出

+-----------+
| Full name |
+-----------+
| John Doe |
+-----------+
1 row in set (0.00 sec)

小结

  • MySQL SELECT语句不需要FROM子句
  • 如果要使用FROM子句但不想引用表,请使用dual表。
  • 为列指定别名以使其更具可读性。