SQL Server Select语句

本教程将介绍SQL Server SELECT语句的基础知识,重点介绍如何针对单个表进行查询。

SQL Server SELECT语句简介

数据库表是存储数据库中所有数据的对象。 在表中,数据按行和列格式逻辑组织,类似于电子表格(Excel)。

在表中,每行代表一个唯一记录,每列代表记录中的一个字段。 例如,customers表包含客户数据,如客户标识号,名字,姓氏,电话,电子邮件和地址信息,如下所示:

SQL Server使用模式对表和其他数据库对象进行逻辑分组。 在示例数据库(bb_stores)中,有两个模式:salesproductionsales模式将所有与销售相关的表分组,而production模式将所有与生产相关的表分组。

要从表中查询数据,请使用SELECT语句。 以下是SELECT语句的最基本形式:

SELECT
    select_list
FROM
    schema_name.table_name;

在上面语法中,

  • 首先,select_list指定要在SELECT子句中查询数据的逗号分隔列的列表。
  • 其次,schema_name.table_name是在FROM子句中指定源表及其模式名称。

处理SELECT语句时,SQL Server首先处理FROM子句,然后处理SELECT子句,即使SELECT子句首先出现在查询中也是一样。

SQL Server SELECT语句示例

下面将使用示例数据库中的customers表进行演示。

1. SQL Server SELECT检索表部分列示例

以下查询查找所有客户的名字和姓氏:

SELECT
    first_name,
    last_name
FROM
    sales.customers;

执行上面查询语句,得到以下结果 -

查询的结果称为结果集

以下语句返回所有客户的名字,姓氏和电子邮件:

SELECT
    first_name,
    last_name,
    email
FROM
    sales.customers;

执行上面查询语句,得到以下结果:

2. SQL Server SELECT从表中检索所有列的示例

要从表的所有列获取数据,可以指定选择列表中的所有列。 还可以使用SELECT *作为速记来减少一些书写:

SELECT
    *
FROM
    sales.customers;

执行上面查询语句,得到以下结果:

SELECT *对于检查不熟悉表的列和数据非常有用,它对即席查询也很有帮助。

但是,由于以下主要原因,不应将SELECT *用于实际生产代码:

  • 首先,SELECT *经常检索比应用程序需要运行的数据更多的数据。它会导致不必要的数据从SQL Server传输到客户端应用程序,从而花费更多时间使数据通过网络传输并减慢应用程序的速度。
  • 其次,如果为表添加了一个或多个新列,则SELECT *只检索包含新添加的列的所有列,这些列不打算在应用程序中使用,这可能会导致应用程序崩溃。

3. SQL Server SELECT - 对结果集进行排序

要根据一个或多个条件筛选行,请使用WHERE子句。在此示例中,查询返回位于CA的客户。如以下示例所示:

SELECT
    *
FROM
    sales.customers
WHERE
    state = 'CA';

执行上面查询语句,得到以下结果:

当WHERE子句可用时,SQL Server按以下顺序处理查询的子句:FROMWHERESELECT。要基于一个或多个列对结果集进行排序,请使用ORDER BY子句,如以下示例所示:

SELECT
    *
FROM
    sales.customers
WHERE
    state = 'CA'
ORDER BY
    first_name;

执行上面查询语句,得到以下结果:

在此示例中,ORDER BY子句按名字按升序对客户进行排序。在这种情况下,SQL Server按以下顺序处理查询的子句:FROMWHERESELECTORDER BY

4. SQL Server SELECT - 将行分组为组示例

要将行分组,请使用GROUP BY子句。 例如,以下语句将返回位于CA的所有客户以及每个城市的客户数量。参考以下查询语句:

SELECT
    city,
    COUNT (*)
FROM
    sales.customers
WHERE
    state = 'CA'
GROUP BY
    city
ORDER BY
    city;

执行上面查询语句,得到以下结果:

在这种情况下,SQL Server按以下顺序处理子句:FROMWHEREGROUP BYSELECTORDER BY

5. SQL Server SELECT - 过滤分组示例

要根据一个或多个条件筛选组,请使用HAVING子句。以下示例返回CA州拥有10个以上客户的城市:

SELECT
    city,
    COUNT (*)
FROM
    sales.customers
WHERE
    state = 'CA'
GROUP BY
    city
HAVING
    COUNT (*) > 10
ORDER BY
    city;

执行上面查询语句,得到以下结果:

请注意,WHERE子句在HAVING子句筛选器分组时筛选行。

在本教程中,学习了如何使用SQL Server SELECT语句从单个表中查询数据。


上一篇: SQL Server数据查询 下一篇: SQL Server连接表