摘要:在本教程中,您将学习如何使用 MySQL SELECT
语句而不引用任何表。
通常,您使用SELECT
语句从数据库的表中选择数据:
SELECT select_list
FROM table_name;
Code language: SQL (Structured Query Language) (sql)
MySQL 不需要FROM
子句。这意味着您可以使用不带FROM
子句的SELECT
语句,如下所示:
SELECT select_list;
Code language: SQL (Structured Query Language) (sql)
这是一个简单的例子:
SELECT 1 + 1;
Code language: SQL (Structured Query Language) (sql)
输出:
+-------+
| 1 + 1 |
+-------+
| 2 |
+-------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
MySQL 有许多内置函数,如字符串、日期和数学函数。您可以使用SELECT
语句来执行这些函数。
以下示例返回 MySQL 服务器的当前日期和时间:
SELECT NOW();
Code language: SQL (Structured Query Language) (sql)
输出:
+---------------------+
| NOW() |
+---------------------+
| 2021-07-26 08:08:02 |
+---------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
NOW()
函数返回运行 MySQL 的服务器的当前日期和时间。 NOW()
函数没有任何参数。要调用它,请将括号 () 放在函数名称后面。
如果函数有参数,则需要将参数传递给它。例如,将字符串连接成一个字符串,可以使用CONCAT()
函数:
SELECT CONCAT('John',' ','Doe');
Code language: SQL (Structured Query Language) (sql)
输出:
+--------------------------+
| CONCAT('John',' ','Doe') |
+--------------------------+
| John Doe |
+--------------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
CONCAT() 函数接受一个或多个字符串并将它们连接成一个字符串。
双表
有时,您仍然需要使用FROM
子句,但不想引用任何实际的表。在这种情况下,您可以在FROM
子句中使用双表:
SELECT select_list
FROM dual;
Code language: SQL (Structured Query Language) (sql)
双表是一个虚拟表,而不是实际表。
如果您需要SELECT
语句的其他子句,则双重也是必需的。如果没有FROM
子句, SELECT
语句将无效。
列别名快速介绍
默认情况下,MySQL使用SELECT
子句中指定的表达式作为结果集的列名。要更改结果集的列名,可以使用列别名:
SELECT expression AS column_alias;
Code language: SQL (Structured Query Language) (sql)
要为列分配别名,请将 AS 关键字放在表达式后面,后跟列别名。 AS
关键字是可选的,因此您可以像这样跳过它:
SELECT expression column_alias;
Code language: SQL (Structured Query Language) (sql)
例如:
SELECT CONCAT('John',' ','Doe') AS name;
Code language: SQL (Structured Query Language) (sql)
输出:
+----------+
| name |
+----------+
| John Doe |
+----------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
如果列别名包含空格,则需要将其放在引号内,如下所示:
SELECT CONCAT('Jane',' ','Doe') AS 'Full name';
Code language: SQL (Structured Query Language) (sql)
输出:
+-----------+
| Full name |
+-----------+
| John Doe |
+-----------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
概括
- MySQL
SELECT
语句不需要FROM
子句 - 如果您想使用
FROM
子句但不想引用表,请使用dual
表。 - 为列分配别名以使其更具可读性。
本教程有帮助吗?