MySQL Select

摘要:在本教程中,您将学习如何使用 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表。
  • 为列分配别名以使其更具可读性。
本教程有帮助吗?