比较 Microsoft Access SQL 和 ANSI SQL

适用于:Access 2013、Office 2013

Microsoft Access 数据库引擎 SQL 通常符合 ANSI-89 级别 1。 但是,某些 ANSI SQL 功能未在 Microsoft Access SQL 中实现。 相反,Microsoft Access SQL 包含 ANSI SQL 不支持的保留字和功能。

主要差异

  • Microsoft Access SQL 和 ANSI SQL 各自拥有不同的保留字和数据类型。 有关详细信息,请参阅 Microsoft Access 数据库引擎 SQL 保留字等价的 ANSI SQL 数据类型。 使用 Microsoft Access 数据库引擎 OLE DB 提供程序时,还提供其他保留字。

  • Between...And

    expr1 [NOT] 介于value1value2 之间

    在 Microsoft Access SQL 中,value1 可以大于 value2;在 ANSI SQL 中,value1 必须小于或等于 value2

  • Microsoft Access SQL 既支持 ANSI SQL 通配符,也支持特定于 Microsoft Access 数据库引擎的通配符以便与 Like 运算符配合使用。 ANSI 和 Microsoft Access 数据库引擎通配符的使用是相互排斥的。 必须使用其中一种而不能混合使用。 ANSI SQL 通配符仅在使用 Microsoft Access 数据库引擎和 Microsoft Access 数据库引擎 OLE DB 提供程序时可用。 如果试图通过 Microsoft Access 或者 DAO 来使用 ANSI SQL 通配符,则这些通配符将被解释为文本。 相反,使用 Microsoft Access 数据库引擎 OLE DB 提供程序才能使用 ANSI SQL 通配符。

    匹配字符

    Microsoft Access SQL

    ANSI SQL

    任意单个字符

    ?

    _(下划线)

    零个或多个字符

    *

    %

  • Microsoft Access SQL 通常限制性很少。 例如,它允许对表达式进行分组和排序。

  • Microsoft Access SQL 支持更加强大的表达式。

Microsoft Access SQL 的增强功能

Microsoft Access SQL 提供了以下增强功能:

Microsoft Access SQL 中不支持 ANSI SQL 功能

Microsoft Access SQL 不支持以下 ANSI SQL 功能:

  • DISTINCT 聚合函数引用。 例如,Microsoft Access SQL 不允许 SUM(DISTINCT columnname)。

  • 用于限制查询返回的行数的 LIMIT TO nn ROWS 子句。 只能使用 WHERE 子句来限制查询的范围。