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

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

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

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

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

本文内容

什么是SQL?

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

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

例如,一个简单的 SQL 语句,用于检索姓氏列表,其名字为 Mary 的联系人可能类似于:

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术语

语音的可比较部分

定义

示例

标识符

名词

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

客户。[电话号码]

运算符

动词或副词

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

AS

常量

名词

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

42

表达式

形容词

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

>= 产品。[单价]

返回页首

基本SQL子句:SELECT、FROM 和 WHERE

SQL语句采用常规形式:

SELECT field_1
FROM table_1
WHERE criterion_1
;

注意: 

  • Access 将忽略 SQL 语句中的换行符。 但是,请考虑针对每个子句使用一行,以帮助提高自己SQL语句的可读性。

  • 每个 SELECT 语句以分号 (;) 。 分号可以出现在最后一个子句的末尾,也可以显示在 SQL 末尾的一行上。

Access 中的示例

下面说明了简单SQL查询的 SQL 语句在 Access 中的外观:

显示 SELECT 语句的 SQL 对象选项卡

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执行许多操作。 有关如何使用这些子句的信息,请参阅以下附加文章:

返回页首

对结果进行排序: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 关键字按降序对值进行排序。

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

返回页首

使用汇总数据:GROUP BY 和 HAVING

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

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

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

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

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

如果不存在 WHERE 子句,GROUP BY 子句紧接 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 键词指定查询结果是否应包含重复行(如果存在)。

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

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

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

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

若要详细了解如何使用 UNION 运算符合并 SELECT 语句,请参阅"使用联合查询合并多个选择查询的结果"。

返回页首

需要更多帮助?

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×