编辑 SQL 语句以改进查询结果

编辑 SQL 语句以改进查询结果

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

如果您的查询不够充分,添加一些基本的SQL 语句有助于您的结果更集中。让我们看看各种类型的 SQL 语句和子句或者您可能编辑以获得所需结果的部分。

注意: 本文不适用于 Access Web 应用 - 使用 Access 设计并联机发布的数据库。

本文内容

创建 Select 语句

自定义 SELECT 子句

自定义 FROM 子句

自定义 WHERE 子句

使用联合运算符自定义

创建 Select 语句

一个 SQL select 语句具有两个或三个子句。SELECT 子句为数据库指定查找数据的位置,并要求数据库返回特定的结果。

注意: SELECT 语句通常以分号 (;) 结尾,它要么位于最后一个子句的末尾,要么位于 SQL 语句末尾一行。

下列 select 语句要求 Access 从“联系人”表的电子邮件地址和公司列中,明确地说是从城市列中的“西雅图”,获得信息。

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

以上查询具有三个子句 SELECT、FROM 和 WHERE。

1. SELECT 子句会列出包含您要使用的数据列,同时包含后跟两个标识符(电子邮件地址和公司)的运算符 (SELECT)。如果标识符具有空格或特殊字符(例如“电子邮件地址”),将标识符括在方括号中。

2. FROM 子句识别源表。在此示例中,其拥有运算符(FROM),后跟标识符(联系人)。

3. WHERE 子句是可选的子句。示例中具有一个运算符(WHERE),后跟一个表达式(城市=“西雅图”)。

有关详细信息选择查询,请参阅创建简单的选择查询。

以下是常见 SQL 子句列表:

SQL 子句

执行的计算

必需 ?

SELECT

列出含有关注的数据的字段。

FROM

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

WHERE

指定要包括在结果内的每条记录必须符合的字段条件。

ORDER BY

指定怎样对结果进行排序。

GROUP BY

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

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

拥有

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

每个 SQL 子句均由术语组成。以下列出了一些常见的 SQL 术语。

SQL 词条

定义

示例

标识符

您用于识别数据库对象的名称,如列名称。

[电子邮件地址]和公司

运算符

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

AS

常量

不发生更改的值,如数字或 NULL。

42

表达式

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

>= 产品.[单价]

返回页首

自定义 SELECT 子句

自定义

示例

仅查看 distinct 值。

在 SELECT 子句中使用 DISTINCT 关键词。

例如,如果您的客户来自很多不同的分支机构,其中一些使用相同的电话号码,同时您仅希望看到电话号码列出一次,您的 SELECT 子句将如下所示:

SELECT DISTINCT [txtCustomerPhone] 

更改标识符在数据表视图中的显示方式,以提高可读性。

请使用 AS 运算符(代表操作或修改操作的关键词),同时在 SELECT 子句中有一个字段别名。字段别名是您分配给字段以使得结果更容易阅读的名称。

SELECT [txtCustPhone] AS [Customer Phone]

自定义 FROM 子句

自定义

示例

您可使用表别名或者 select 语句中分配给表的不同名称。如果表名称很长,尤其是当您拥有来自不同表格的相同名称的多个字段时,表别名很有用。

要从两个字段中选择数据,均为命名的 ID,其中一个来自表 tblCustomer,另一个来自表 tblOrder:

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

使用 AS 运算符规定 FROM 子句中的表别名:

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

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

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

使用联接将来自两个数据源的成对记录合并为一个结果,或者如果相关表中没有相应记录时,规定是否包括来自各个表的记录。

联接表,以便查询可以将来自表中的项目合并起来,并当其他表中没有相应记录时排除某些项

下面是 FROM 子句可能的形式:

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

有关使用联接

有两种类型的联接,内部联接和外部联接。内部联接在查询中更为常用。 当您使用内部联接运行查询时,结果仅会显示在两个联接表中存在常见值的项目。

外部联接规定了是否包括不存在常见值的数据。外部联接是有方向的,意味着您可以规定是否包括来自联接中规定的第一个表中的所有记录(称为左联接),或者包括来自联接中规定的第二个表中的所有记录(称为右联接)。外部联接的 SQL 语法如下:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

请参阅有关在查询中联接表和查询中使用联接的详细信息。

返回页首

自定义 WHERE 子句

WHERE 子句包括有助于限制返回的查询中的项数的条件。请参阅查询条件示例和它们的工作方式。

如何自定义基本 WHERE 子句的示例是限制查询结果;假定您要查找一个客户的电话号码,而且您只记得他的姓为Bagel。在此示例中,姓保存在姓氏字段中,因此 SQL 语法如下:

WHERE [LastName]='Bagel'

也使用 WHERE 子句合并具有匹配的数据,但不同数据类型的列的数据源。这会非常方便由于不能创建具有不同数据类型的字段之间的联接。将一个字段用作条件的字段,使用LIKE关键字。例如,如果您想要使用资产表和员工表中的数据,仅当的资产资产中键入资产表的字段有数字 3 数量字段中的雇员表,下面介绍了 WHERE 子句的外观:

WHERE field1 LIKE field2

重要:  您无法在 WHERE 子句中规定与聚合函数一起使用的字段的条件。相反,您可使用 HAVING 子句规定聚合字段的条件。

返回页首

使用联合运算符自定义

当您想要看到来自多个类似 select 查询结果的合并视图时,请使用联合运算符。例如,如果您的数据库具有产品表和服务表,而且都具有三个字段:exclusive offer 或 product 或 service,price,warranty 或 guarantee。尽管产品表储存着 warranty 信息,而且服务表储存着 guarantee 信息,其基本信息是相同的。您可使用联合查询合并来自两张表中的三个字段,如下所示:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;

当您运行该查询时,来自每套相应字段的数据将合并为一个输出字段。要在结果中包括任何的重复行,请使用 ALL 运算符。

注意:  Select 语句必须拥有相同数量的输出字段,以相同的顺序,而且是相同或兼容的数据类型。根据联合查询的目的,“数字”和“文本”数据类型兼容。

有关联合查询的详细信息,请参阅使用联合查询以查看来自多个查询的统一的结果

返回页首

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

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

此信息是否有帮助?

谢谢您的反馈!

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

×