Access SQL:基本概念、词汇和语法

2026-06-19 14:15:55   今晚世界杯预测

如果要从数据库中检索数据,请使用 结构化查询语言 或 SQL 请求数据。 SQL 是一种与英语非常相似的计算机语言,但数据库程序可以理解。 运行的每个查询都在后台使用 SQL。

了解 SQL 的工作原理有助于创建更好的查询,并让你更轻松地了解如何修复未返回所需结果的查询。

本文是关于 Access SQL 的一系列文章之一。 本文介绍 SQL 选择数据的基本用法,并使用示例来说明 SQL 语法。

本文内容

什么是 SQL?

基本 SQL 子句:SELECT、FROM 和 WHERE

对结果进行排序:ORDER BY

使用汇总数据:GROUP BY 和 HAVING

组合查询结果:UNION

什么是 SQL?

SQL 是一种计算机语言,用于处理事实集及其之间的关系。 关系数据库程序(如 Microsoft Office Access)使用 SQL 来处理数据。 与许多计算机语言不同,即使对于新手来说,SQL 也不难阅读和理解。 与许多计算机语言一样,SQL 是 ISO 和ANSI 等标准机构认可的国际标准。

使用 SQL 描述可帮助你回答问题的数据集。 使用 SQL 时,必须使用正确的语法。 语法是正确组合语言元素的规则集。 SQL 语法基于英语语法,使用许多与 Visual Basic for Applications (VBA 相同的元素) 语法。

例如,检索名字为 Mary 的联系人的姓氏列表的简单 SQL 语句可能如下所示:

SELECT Last_Name

FROM Contacts

WHERE First_Name = 'Mary';

注意

SQL 不仅用于操作数据,还用于创建和更改数据库对象(如表)的设计。 用于创建和更改数据库对象的 SQL 部分称为数据定义语言 (DDL) 。 本主题不介绍 DDL。 有关详细信息,请参阅 使用数据定义查询创建或修改表或索引一文。

SELECT 语句

若要使用 SQL 描述一组数据,请编写 SELECT 语句。 SELECT 语句包含要从数据库获取的一组数据的完整说明。 包括以下情况:

哪些表包含数据。

来自不同源的数据如何相关。

哪些字段或计算将生成数据。

要包含的数据必须匹配的条件。

是否以及如何对结果进行排序。

SQL 子句

与句子一样,SQL 语句具有 子句。 每个子句为 SQL 语句执行一个函数。 SELECT 语句中需要一些子句。 下表列出了最常见的 SQL 子句。

SQL 子句

作用

必填

SELECT

列出包含相关数据的字段。

是

FROM

列出包含 SELECT 子句中列出的字段的表。

是

WHERE

指定结果中包含的每个记录必须满足的字段条件。

否

ORDER BY

指定如何对结果进行排序。

否

GROUP BY

在包含聚合函数的 SQL 语句中,列出 SELECT 子句中未汇总的字段。

仅当存在此类字段时

HAVING

在包含聚合函数的 SQL 语句中,指定应用于 SELECT 语句中汇总的字段的条件。

否

SQL 术语

每个 SQL 子句都由术语组成,相当于语音的一部分。 下表列出了 SQL 术语的类型。

SQL 术语

语音的可比部分

定义

示例

标识符

名词

用于标识数据库对象的名称,例如字段的名称。

客户。[电话号码]

运算符

谓词或副词

表示操作或修改操作的关键字 (keyword) 。

AS

常量

名词

一个不会更改的值,例如数字或 NULL。

42

表达式

形容词

计算结果为单个值的标识符、运算符、常量和函数的组合。

>= Products。[单价]

返回页首

基本 SQL 子句:SELECT、FROM 和 WHERE

SQL 语句采用常规形式:

SELECT field_1

FROM table_1

WHERE criterion_1

;

注意

Access 忽略 SQL 语句中的换行符。 但是,请考虑为每个子句使用一行,以帮助提高你自己和其他人的 SQL 语句的可读性。

每个 SELECT 语句都以分号 (;) 结尾。 分号可以出现在最后一个子句的末尾,也可以出现在 SQL 语句末尾的行中。

Access 中的示例

下面演示了用于简单选择查询的 SQL 语句在 Access 中的外观:

1. SELECT 子句

2. FROM 子句

3. WHERE 子句

此示例 SQL 语句显示“从名为”联系人“的表中选择存储在名为”电子邮件地址“和”公司“的字段中的数据,特别是那些字段”City“值为 Seattle 的记录。

让我们看一下示例(一次一个子句),了解 SQL 语法的工作原理。

SELECT 子句

SELECT [E-mail Address], Company

这是 SELECT 子句。 它由操作员 (SELECT) 后跟两个标识符 ([电子邮件地址] 和公司) 组成。

如果标识符包含空格或特殊字符 ((如“电子邮件地址”) ),则必须用方括号括起来。

SELECT 子句不必说哪些表包含字段,也不能指定要包含的数据必须满足的任何条件。

SELECT 子句始终显示在 SELECT 语句的 FROM 子句前面。

FROM 子句

FROM Contacts

这是 FROM 子句。 它由操作员 (FROM) 后跟标识符 (联系人) 组成。

FROM 子句不列出要选择的字段。

WHERE 子句

WHERE City="Seattle"

这是 WHERE 子句。 它由运算符 (WHERE) 后跟表达式 (City=“Seattle”) 组成。

注意

与 SELECT 和 FROM 子句不同,WHERE 子句不是 SELECT 语句的必需元素。

可以使用 SELECT、FROM 和 WHERE 子句完成 SQL 允许执行的许多操作。 有关如何使用这些子句的详细信息,请参阅以下附加文章:

Access SQL:SELECT 子句

Access SQL:FROM 子句

Access SQL:WHERE 子句

返回页首

对结果进行排序:ORDER BY

与 Microsoft Excel 一样,Access 允许对数据表中的查询结果进行排序。 还可以在查询中使用 ORDER BY 子句在查询运行时指定对结果进行排序的方式。 如果使用 ORDER BY 子句,则它是 SQL 语句中的最后一个子句。

ORDER BY 子句包含要用于排序的字段列表,其顺序与要应用排序操作的顺序相同。

例如,假设您希望结果首先按字段“公司”的值按降序排序,如果存在与“公司”值相同的记录,则按字段“电子邮件地址”中的值按升序排序。 ORDER BY 子句如下所示:

ORDER BY Company DESC, [E-mail Address]

注意

默认情况下,Access (A-Z 升序对值进行排序,从小到大) 。 改用 DESC 关键字 (keyword) 按降序对值进行排序。

有关 ORDER BY 子句的详细信息,请参阅主题 ORDER BY 子句。

返回页首

使用汇总数据:GROUP BY 和 HAVING

有时,你需要处理汇总的数据,例如一个月内的总销售额,或者库存中最昂贵的商品。 为此,请将聚合函数应用于 SELECT 子句中的字段。 例如,如果希望查询显示每个公司列出的电子邮件地址计数,SELECT 子句可能如下所示:

SELECT COUNT([E-mail Address]), Company

可以使用的聚合函数取决于要使用的字段或表达式中的数据类型。 有关可用聚合函数的详细信息,请参阅 SQL 聚合函数一文。

指定聚合函数中未使用的字段:GROUP BY 子句

使用聚合函数时,通常还必须创建 GROUP BY 子句。 GROUP BY 子句列出不应用聚合函数的所有字段。 如果将聚合函数应用于查询中的所有字段,则无需创建 GROUP BY 子句。

GROUP BY 子句紧跟 WHERE 子句;如果没有 WHERE 子句,则紧跟 FROM 子句。 GROUP BY 子句列出在 SELECT 子句中显示的字段。

例如,继续上一个示例,如果 SELECT 子句将聚合函数应用于 [电子邮件地址],但不应用于公司,则 GROUP BY 子句将如下所示:

GROUP BY Company

有关 GROUP BY 子句的详细信息,请参阅主题 GROUP BY 子句。

使用组条件限制聚合值:HAVING 子句

如果要使用条件来限制结果,但要应用条件的字段在聚合函数中使用,则不能使用 WHERE 子句。 请改用 HAVING 子句。 HAVING 子句的工作方式类似于 WHERE 子句,但用于聚合数据。

例如,假设使用 AVG 函数 (该函数使用 SELECT 子句中的第一个字段计算) 平均值:

SELECT COUNT([E-mail Address]), Company

如果希望查询基于该 COUNT 函数的值限制结果,则不能在 WHERE 子句中使用该字段的条件。 而是将条件放在 HAVING 子句中。 例如,如果仅希望查询在有多个电子邮件地址与公司关联时返回行,则 HAVING 子句可能如下所示:

HAVING COUNT([E-mail Address])>1

注意

查询可以具有 WHERE 子句和 HAVING 子句 - 聚合函数中未使用的字段的条件位于 WHERE 子句中,与聚合函数一起使用的字段的条件在 HAVING 子句中。

有关 HAVING 子句的详细信息,请参阅主题 HAVING 子句。

返回页首

组合查询结果:UNION

如果要将多个类似的选择查询返回的所有数据作为组合集一起查看,请使用 UNION 运算符。

UNION 运算符允许将两个 SELECT 语句合并为一个语句。 合并的 SELECT 语句必须具有相同数量的输出字段,顺序相同,并且数据类型相同或兼容。 运行查询时,来自每个相应字段集的数据将合并为一个输出字段,以便查询输出具有与每个 select 语句相同的字段数。

注意

对于联合查询,数字和文本数据类型是兼容的。

使用 UNION 运算符时,还可以通过使用 ALL 关键字指定查询结果是否应包含重复行(如果有)。

合并两个 SELECT 语句的联合查询的基本 SQL 语法如下所示:

SELECT field_1

FROM table_1

UNION [ALL]

SELECT field_a

FROM table_a

;

例如,假设你有一个名为 Products 的表和另一个名为 Services 的表。 这两个表都有包含产品或服务名称、价格、保修或保证可用性以及是否专门提供产品或服务的字段。 虽然“产品”表存储保修信息,而“服务”表存储保证信息,但基本信息 (特定产品或服务是否包含质量) 承诺。 可以使用联合查询(如下所示)合并两个表中的四个字段:

SELECT name, price, warranty_available, exclusive_offer

FROM Products

UNION ALL

SELECT name, price, guarantee_available, exclusive_offer

FROM Services

;

有关如何使用 UNION 运算符合并 SELECT 语句的详细信息,请参阅 使用联合查询合并多个选择查询的结果。

返回页首

2026凯利指数完全指南:低凯利值冷门怎么抓?欧冠世界杯真实赔率案例+计算公式实战教学
中考报考