Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

本文是关于 Access SQL 的一系列文章之一。 本文介绍如何编写 FROM 子句,使用示例说明可在 FROM 子句中使用的各种技术。

在 SELECT 语句的 FROM 子句中指定数据源。 FROM 子句可能还包含 JOIN 操作。 使用 JOIN 操作匹配和合并两个数据源中的数据,例如两个表或一个表和一个查询。

有关 Access SQL 的概述,请参阅 Access SQL:基本概念、词汇和语法一文。

本文内容

指定数据源

SELECT 语句中的 FROM 子句指定包含 SELECT 子句将使用的数据的表或查询。

假设你想知道特定客户的电话号码。 假设包含存储此数据的字段的表称为 tblCustomer,FROM 子句将类似以下:

FROM tblCustomer

可以用方括号将该名称括起来。 如果名称不含任何空格或特殊字符(例如标点符号),则方括号为可选项。 如果名称含有空格或特殊字符,则必须使用方括号。

提示: 含空格的名称更易辨认,在设计窗体和报表时可为用户节省时间,而缺点在于编写 SQL 语句时需键入更多空格。 在 Access 数据库中为对象命名时应考虑这一点。

使用数据源的替换名称

可以使用不同名称在 SELECT 语句中引用表,方法是在 FROM 子句中使用表别名。 表别名是将表达式用作数据源时或为了使 SQL 语句易于键入和阅读,分配给查询中的数据源的名称。 如果数据源名称很长或难以键入,特别是当多个字段具有来自不同表的相同名称时,表别名非常有用。

例如,如果你希望选择两个字段中的数据,均为已命名 ID,其中一个来自表 tblCustomer,另一个来自表 table tblOrder,则 SELECT 子句可能类似以下:

SELECT [tblCustomer].[ID], [tblOrder].[ID]

通过在 FROM 子句中使用表别名,可简化查询输入。 包含表别名的 FROM 子句可能类似以下:

FROM [tblCustomer] AS [C], [tblOrder] AS [O]

可在 SELECT 子句中使用这些表别名,如下所示:

SELECT [C].[ID], [O].[ID]

注意: 使用表别名时,可以在 SQL 语句中引用表,方法是使用别名或使用表的完整名称。

联接相关数据

如果需要将两个数据源中的成对记录合并到查询结果的单个记录中,可执行联接操作。 联接是一种 SQL 操作,该操作指定两个数据源的关联方式,以及当另一个源中无对应数据时,是否应包含该源中的数据。

若要合并两个数据源中的信息,可对其共同的字段执行联接操作。 存储在此字段中的值匹配时,记录中的数据合并在结果中。

除了合并数据,还可使用联接操作指定,在相关表中没有对应记录的情况下是否包含该表中的记录。

例如,假设要使用查询中两个表(tblCustomer 和 tblOrder)的数据。 两个表均具有 CustomerID 字段,该字段用于标识客户。 tblCustomer 表中的每个记录可能在 tblOrder 表中具有一个或多个对应记录,对应值可由 CustomerID 字段中的值确定。

如果要联接表,使查询合并表中的记录(如果相关表中没有相应记录,则排除该表中的记录),FROM 子句可能类似以下(此处添加换行符以便阅读):

FROM [tblCustomer] INNER JOIN [tblOrder] ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

对于 Access,联接发生在 SELECT 语句的 FROM 子句中。 有两种类型的联接:内联和外联。 以下部分介绍这两种类型的联接。

内联

内联是最常见的联接类型。 包含内联的查询运行时,查询结果中的记录只是包含两个联接表中共同的值的记录。

内联具有以下语法(此处添加换行符以便阅读):

FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2

下表介绍内联操作的不同部分。

部分

说明

table1, table2

对其中的记录进行组合的表的名称。

field1, field2

要联接的字段的名称。 如果它们不是数值,则字段必须属于相同的数据类型,并且包含相同种类的数据,但它们不必有相同的名称。

compopr

任何关系比较运算符:“=”、“<”、“>”、“<=”、“>=”或“<>”。

外联

外联类似于内联,因为其指定查询如何合并两个源中的信息。 不同之处在于外联还指定在不存在共同值的情况下,是否包含数据。 外联具有方向性:可指定是否包括联接中指定的第一个数据源中的所有记录(称为“左联接”),或者是否包括联接中第二个数据源中的所有记录(称为“右联接”)。

外联具有以下语法:

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1compopr table2.field2

下表介绍左联接和右联接操作的不同部分。

部分

说明

table1, table2

对其中的记录进行组合的表的名称。

field1, field2

要联接的字段的名称。 这些字段必须属于相同的数据类型,并且包含相同种类的数据,但它们不必具有相同的名称

compopr

任何关系比较运算符:“=”、“<”、“>”、“<=”、“>=”或“<>”。

有关联接的详细信息,请参阅联接表和查询一文。

页面顶端

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。