查询基础知识

查询是对存储在 SQL Server 中的数据的一种请求。可以使用下列几种形式发出查询:

  • MS Query 或 Microsoft Access 用户可使用图形用户界面 (GUI) 从一个或多个 SQL Server 表中选择想要查看的数据。

  • 使用 SQL Server Management Studio 或 osql 实用工具的用户可发出 SELECT 语句。

  • 客户端或基于中间层的应用程序(如 Microsoft Visual Basic 应用程序)可将 SQL Server 表中的数据映射到绑定控件(如网格)。

尽管查询使用多种方式与用户交互,但它们都完成相同的任务:它们为用户提供 SELECT 语句的结果集。即使用户从不指定 SELECT 语句,与使用图形化工具(如 Visual Studio Query Designer)所经常遇到的情况一样,客户端软件可将每个用户查询转换成发送到 SQL Server 的 SELECT 语句。

SELECT 语句从 SQL Server 中检索出数据,然后以一个或多个结果集的形式将其返回给用户。结果集是对来自 SELECT 语句的数据的表格排列。与 SQL 表相同,结果集由行和列组成。

虽然 SELECT 语句的完整语法比较复杂,但是大多数 SELECT 语句都描述结果集的四个主要属性:

  • 结果集中的列的数量和属性。对于每个结果集列来说,必须定义下列属性:

    • 列的数据类型。

    • 列的大小以及数值列的精度和小数位数。

    • 返回到列中的数据值的源。

  • 从中检索结果集数据的表,以及这些表之间的所有逻辑关系。

  • 为了符合 SELECT 语句的要求,源表中的行所必须达到的条件。不符合条件的行会被忽略。

  • 结果集的行的排列顺序。

下列 SELECT 语句查找单价超过 $40 的产品的产品 ID、名称以及标价:

SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ListPrice > $40
ORDER BY ListPrice ASC

在 SELECT 关键字之后所列出的列名(ProductID、Name 和 ListPrice)形成选择列表。此列表指定结果集有三列,并且每一列都具有 Product 表中相关列的名称、数据类型和大小。因为 FROM 子句仅指定了一个基表,所以 SELECT 语句中的所有列名都引用该表中的列。

FROM 子句仅列出 Product 这一个表,该表用来检索数据。

WHERE 子句指定出条件:在 Product 表中,只有 ListPrice 列中的值大于 $40,该值所在的行才符合 SELECT 语句的要求。

ORDER BY 子句指定结果集将基于 ListPrice 列中的值按照升序进行排序 (ASC)。