SQL Server SELECT

17 Mar 2025 | 5 分钟阅读

SQL Server 中的 SELECT 语句用于显示表中的所有或特定记录。 该语句允许我们根据需要提取记录,或检索表的所有记录。

SELECT 语句的需求

数据库可以包含一个或多个表,每个表都以顺序方式存储我们的数据。 表中的数据以行和列的形式组织,类似于电子表格。 每行代表唯一的记录,每列代表表中的字段。 SQL Server 使用模式以逻辑方式排列表。

当我们从表中提取或获取所需数据时,我们使用以 SQL 语言编写的查询。 用于此类操作的最基本语句是 SELECT 语句。

语法

以下语句说明了 SELECT 语句的最基本用法,用于从表中获取记录

如果我们想从表中获取所有列,我们使用以下语句

在此语法中,我们看到了以下参数

Column 或 *: 它指示我们要在结果集中获取的表的字段名称。 当需要获取所有列时,我们使用星号 (*)。

Table: 它指示我们要从中检索数据的表的名称。 我们可以列出多个表。

WHERE: 这是一个可选子句,用于根据给定条件过滤记录。

GROUP BY: 这是一个可选子句,用于根据单个或多个列对记录进行分组。

HAVING: 这是一个与 GROUP BY 子句一起使用的可选子句,仅返回条件为 TRUE 的那些行。

ORDER BY: 这是一个可选子句,用于按升序或降序排列表记录。

注意事项

  • SQL Server 将首先评估 FROM 子句,然后评估 SELECT 子句。
  • 不建议在实时数据库中使用 SELECT *,因为它获取的数据超过了我们的要求。
  • SELECT * 查询会降低应用程序性能。
  • 当用户向表中添加新列时,SELECT * 查询会获取所有列,包括新列,从而导致应用程序崩溃。

SELECT 语句示例

让我们通过几个示例来了解 SELECT 查询如何在 SQL Server 中工作。 假设我们有一个名为 "employee_info" 的表,其中包含以下数据

SQL Server SELECT

示例 1: 假设我们只想从表中按排序方式获取一列(名称)。 我们可以使用以下语句获取此数据

执行该语句将获得以下只有一列的输出

SQL Server SELECT

示例 2: 假设我们想要从表中以员工姓名排序的方式获取多个列。 我们可以使用以下语句获取此数据

执行该语句将获得以下输出,我们可以在其中看到员工的姓名、职业和薪水

SQL Server SELECT

示例 3: 假设我们想要检索表的所有列数据。 在这种情况下,我们需要使用 select 语句编写所有列的名称,或者使用一个星号 (*) 符号代替列名。 指定所有列名称对用户来说不方便,因此我们通常使用星号 (*) 来检索所有列数据,并节省一些打字时间。 还可以用来检查我们不熟悉的表的列和数据。 这是查询

执行查询将显示以下输出,我们可以在其中看到表的所有列

SQL Server SELECT

示例 4: 此示例将说明带有 WHERE 子句的 SELECT 语句。 WHERE 子句用于根据一个或多个列过滤数据。 以下查询将返回所有工作时间大于 10 的员工信息

执行该语句会显示以下输出

SQL Server SELECT

示例 5: 此示例说明了带有 GROUP BY 子句的 SELECT 语句,该子句用于根据单个或多个列将行分组到组中。 以下语句显示了每种职业中的职业和员工人数,然后按升序对其进行排序

执行该语句将显示预期的结果

SQL Server SELECT

示例 6: 此示例说明了带有 HAVING 子句的 SELECT 语句。 我们使用 HAVING 子句通过使用单个或多个列来过滤组。 需要注意的是,WHERE 子句过滤记录,而 HAVING 子句过滤组。 以下语句显示了每种职业中的职业和员工人数,该职业的员工人数超过一名,然后按升序对其进行排序

执行该语句将显示预期的结果

SQL Server SELECT

示例 7: 此示例说明了带有 TOP 子句的 SELECT 语句。 TOP 子句显示表中有限数量的记录。 需要注意的是,我们必须指定 TOP 子句中返回多少行。

假设我们想要获取表的前三条记录。 为了获取此详细信息,我们使用如下查询

执行此查询将仅返回前三条记录,如下所示

SQL Server SELECT

示例 8: 此示例说明了带有 JOIN 子句的 SELECT 语句。 我们使用 JOIN 子句从两个以上的表中获取数据。

我们将使用两个名为 "Student""Fee" 的表来演示此示例。 下图显示了两个表的数据

SQL Server SELECT

假设我们想要获取已支付课程费用的学生信息。 在这种情况下,我们使用公共列 "admission_no" 作为连接条件,以从两个表中获取数据。 让我们执行以下语句以从两个表中获取所需的数据

执行命令将显示预期的结果

SQL Server SELECT

结论

本文将帮助我们详细了解 SELECT 语句,了解我们为什么使用它,以及如何在 SQL Server 中使用它来查询来自单个表以及多个表的数据。