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表。
- 为列指定别名以使其更具可读性。