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

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

如果要在数据库中检索数据,可以使用结构化查询语言,即 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 是识别的标准机构,例如ISOANSI国际标准。

使用 SQL 可以帮助您回答的问题的数据集的描述。使用 SQL 时,您必须使用正确的语法。语法不正确组合依据的一种语言的元素的规则集。基于英语语法,并使用许多相同的元素作为 Visual Basic for Applications (VBA) 语法的 SQL 语法。

例如,一个简单的 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 子句中汇总的字段。

仅在存在这类字段时才是必需的

拥有

在包含聚合函数的 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 中的示例

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

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

1. SELECT 子句

2. FROM 子句

3. WHERE 子句

此示例 SQL 语句可以读作“选择存储在名为‘联系人’的表内名为‘电子邮件地址’和‘公司’的字段中的数据,特别是‘城市’字段的值为‘西安’的记录。”

我们来看一下该示例,一次看一个子句,以便了解 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) 及后面的表达式(城市="西安") 组成。

注意: 与 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 子句的详细信息,请参阅顺序 BY 子句的主题。

返回页首​​

处理汇总数据:GROUP BY 和 HAVING

有时候您想要处理汇总数据,例如一个月的总销售额或者库存中最昂贵的物品。若要执行此操作,您将聚合函数应用在 SELECT 子句中的字段。例如,如果您希望查询显示为每家公司列出的电子邮件地址计数,则 SELECT 子句可能类似于以下内容:

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

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

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

在使用聚合函数时,通常还必须创建一个 GROUP BY 子句。GROUP BY 子句列出未应用聚合函数的所有字段。如果您向查询中的所有字段应用了聚合函数,则不必创建 GROUP BY 子句。

GROUP BY 子句紧跟在 WHERE 子句或 FROM 子句(如果没有 WHERE 子句)后面。GROUP BY 子句会像字段在 SELECT 子句中出现的那样列出字段。

例如,继续使用上一个示例,如果 SELECT 子句向 [电子邮件地址] 而未向“公司”应用聚合函数,则 GROUP BY 子句将类似于以下内容:

GROUP BY Company

有关 GROUP BY 子句的详细信息,请参阅组 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 子句的详细信息,请参阅遇到子句的主题。

返回页首​​

合并查询结果:UNION

当您希望将几个相似的选择查询返回的所有数据一起作为一个合并的集合查看时,便可以使用 UNION 运算符。

UNION 运算符让您将两个 SELECT 语句合二为一。合并的 SELECT 语句必须具有相同的输出字段数、采用相同的顺序并包含相同或兼容的数据类型。在运行查询时,来自每组相应字段的数据将合并到一个输出字段中,这样查询输出所包含的字段数将与每个 Select 语句相同。

注意: 根据联合查询的目的,“数字”和“文本”数据类型兼容。

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

对于合并了两个 SELECT 语句的联合查询,其基本 SQL 语法如下:

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
;

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

返回页首​​

注释: 

  • 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

  • 请在 此处 中查找本文的英文版本以便参考。你和 Microsoft 社区的其他成员可以使用 Community Translation Framework (CTF) 来改进本文。只需将鼠标悬停在文章中的句子上,然后在 CTF 小组件中单击“IMPROVE TRANSLATION”即可。 单击此处了解有关 CTF 的详细信息。 使用 CTF 即表示你同意服务条款

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

此信息是否有帮助?

谢谢您的反馈!

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

×