MySQL SELECT 语句

11 Aug 2025 | 7 分钟阅读

引言

在本文中,我们将通过各种工作示例详细阐述 MySQL SELECT 语句的概念。

什么是 MYSQL SQL 语句?

MySQL 中的 SELECT 语句用于**从一个或多个表中获取数据**。我们可以使用此语句检索所有字段或匹配指定条件的特定字段的记录。它还可以与各种脚本语言配合使用,例如 PHPRuby 等。

SELECT 语句语法

这是最常用的 SQL 查询。从表中获取数据的此语句的通用语法如下:

所有字段的语法

参数解释

SELECT 语句使用以下参数:

参数名称描述
field_name(s) 或 *用于在结果集中指定一个或多个要返回的列。星号 (*) 返回表的所有字段。
table_name(s)这是我们要从中获取数据的表的名称。
WHERE这是一个可选子句。它指定了要在结果集中返回匹配记录的条件。
GROUP BY这是一个可选的。它从多个记录中收集数据,并按一个或多个列进行分组。
HAVING这是一个可选的。它与 GROUP BY 子句一起工作,并且仅返回条件为 TRUE 的行。
ORDER BY这是一个可选的。它用于对结果集中的记录进行排序。
OFFSET这是一个可选的。它指定第一行返回的行。默认情况下,它从零开始。
LIMIT这是一个可选的。它用于限制结果集中返回的记录数量。

注意:请注意,MySQL 始终首先评估 FROM 子句,然后才评估 SELECT 子句。

MySQL SELECT 语句示例

让我们通过几个示例了解 SELECT 命令在 MySQL 中是如何工作的。假设我们有一个名为 **employee_detail** 的表,其中包含以下数据:

MySQL SELECT Statement

1. 如果我们想从表中检索**单个列**,则需要执行以下查询:

说明:执行上述语句后,它将检索 "employee_detail" 的信息。

我们将获得以下输出,其中我们只能看到一列记录。

MySQL SELECT Statement

2. 如果我们想从表中查询**多个列**,则需要执行以下查询:

说明:执行上述语句后,它将检索 "employee_detail" 的信息,例如姓名、电子邮件和城市。

我们将获得以下输出,其中我们可以看到员工的姓名、电子邮件和城市。

MySQL SELECT Statement

3. 如果我们要从表中的**所有列**获取数据,则需要使用 select 语句的所有列名。指定所有列名对用户来说并不方便,因此 MySQL 使用**星号** (*) 来检索所有列数据,如下所示:

说明:执行上述语句后,它将检索 "employee_detail" 的所有信息。

我们将获得以下输出,其中我们可以看到表的所有列。

MySQL SELECT Statement

4. 在这里,我们将**SUM 函数**与 SELECT 命令中的 **HAVING 子句**一起使用,以获取员工姓名、城市和总工作小时数。此外,它使用 **GROUP BY 子句**按 Name 列对它们进行分组。

它将显示以下输出

MySQL SELECT Statement

5. MySQL SELECT 语句还可以通过使用 **JOIN 语句**从多个表中检索记录。假设我们有一个名为 **"customer"** 和 **"orders"** 的表,其中包含以下数据:

表:customer

MySQL SELECT Statement

表:orders

MySQL SELECT Statement

执行以下 SQL 语句,该语句使用 **INNER JOIN 查询**返回两个表中的匹配记录。

成功执行查询后,我们将获得以下输出:

MySQL SELECT Statement

6. MySQL SELECT DISTINCT 子句用于检索列中的唯一数据。

语法

例如:以教师表为例

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000
T 501SumanMCA32000
T 601SumanMCA32000

说明:在上面的查询中,它将检索表中的唯一记录。

输出:以下是此示例的输出。

T_Name资格验证 (Qualification)薪金
AnshuBCA25000
HarshitaMCA35000
拉曼 (Raman)Mtech45000
RubyBCA22000
SumanMCA32000
SumanMCA32000

7. 在 MySQL select 语句中,LIMIT 子句用于设置上限并限制查询返回的行数。它主要用于获取表中的热门记录并管理大量数据。

语法

以教师表为例

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000
T 501SumanMCA32000
T 601SumanMCA32000

说明:在上面的查询中,它将检索表中的前 4 条记录。

输出:以下是此示例的输出。

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000

关于 MYSQL SELECT 语句的常见问题

1. 在 MySQL Select 语句中选择数据时,有哪些关键点?

答案:以下是在 MySQL select 语句中选择数据时的一些关键点。

  • 仅指定必需的列:通过仅选择必需的列来减少数据检索时间。
  • 利用索引加快查询速度:确保 WHERE 和 ORDER BY 子句中使用的列已建立索引。
  • 使用 LIMIT 和 OFFSET 进行分页:使用 LIMIT 和 OFFSET 来高效处理大型数据集并改善用户体验。
  • 使用别名:使用列别名来简化复杂查询并提高可读性。

2. GROUP BY 子句是什么意思?

答案:它用于按指定列中的相同值对行进行分组。它主要与 COUNT、SUM、AVG 等**聚合函数**一起使用。

3. 编写一个 MYSQL 查询来从下表中检索前 5 条记录。

教师表

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000
T 501SumanMCA32000
T 601SumanMCA32000

解决方案

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000
T 501SumanMCA32000

说明:在上面的 select 查询中,* 用于选择表中的所有记录,ORDER BY 子句用于按升序排列数据,LIMIT 子句用于限制记录,即它将获取表中的前 5 条记录。

输出:以下是此示例的输出。

4. 编写一个 MYSQL 查询来从下表中检索最后 3 条记录。

教师表

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000
T 501SumanMCA32000
T 601SumanMCA32000

解决方案

TIDT_Name资格验证 (Qualification)薪金
T 401RubyBCA22000
T 501SumanMCA32000
T 601SumanMCA32000

说明:在上面的 select 查询中,* 用于选择表中的所有记录,ORDER BY 子句用于使用 DESC 关键字按降序排列数据,LIMIT 子句用于限制记录,即它将获取表中的最后 3 条记录。

输出:以下是此示例的输出。

5. MySQL Select 语句中 offset 的作用是什么?

答案:在 MySQL 中,LIMIT 和 OFFSET 子句提供了一种强大的分页方法。将 OFFSET 与 LIMIT 子句结合使用,以同时定义起始点和要返回的行数。

语法

以教师表为例

TIDT_Name资格验证 (Qualification)薪金
T101AnshuBCA25000
T 201HarshitaMCA35000
T 301拉曼 (Raman)Mtech45000
T 401RubyBCA22000
T 501SumanMCA32000
T 601SumanMCA32000

解决方案

说明:在上面的查询中,由于没有指定限制,因此从 Teachers 表中检索从第 5 行开始的所有行。

输出:以下是此示例的输出。

TIDT_Name资格验证 (Qualification)薪金
T 501SumanMCA32000

下一主题MySQL Replace