Microsoft Access SQL と ANSI SQL の比較Comparison of Microsoft Access SQL and ANSI SQL

適用先: Access 2013、Office 2013Applies to: Access 2013, Office 2013

Microsoft Access データベース エンジン SQL は、ANSI 文字セット 89 レベル 1 の仕様にほぼ準拠しています。Microsoft Access database engine SQL is generally ANSI-89 Level 1 compliant. ただし、Microsoft Access SQL では、ANSI SQL の一部の機能は実装されていません。However, certain ANSI SQL features are not implemented in Microsoft Access SQL. その一方で、ANSI SQL ではサポートされていない予約語や機能が実装されています。Conversely, Microsoft Access SQL includes reserved words and features not supported in ANSI SQL.

主な違いMajor differences

  • Microsoft Office Access SQL と ANSI SQL とでは、異なる予約語およびデータ型があります。詳細については、「SQL 予約語」および「Microsoft Jet データベース エンジン SQL と ANSI SQL のデータ型」を参照してください。Microsoft Office Access Database Engine OLE DB Provider と組み合わせて使うと、追加の予約語を使用できます。Microsoft Access SQL and ANSI SQL each have different reserved words and data types. For more information, see Microsoft Access Database Engine SQL Reserved Words and Equivalent ANSI SQL Data Types. Using the Microsoft Access Database Engine OLE DB Provider there are additional reserved words.

  • Between...AndBetween…And

    expr1[ Value1 value2 ] の間ではないexpr1 [NOT] Between value1 And value2

    Microsoft Access SQL では、引数 value1 に引数 value2 より大きい値を指定できますが、ANSI SQL では引数 value1 は必ず引数 value2 以下の値である必要があります。In Microsoft Access SQL, value1 can be greater than value2; in ANSI SQL, value1 must be equal to or less than value2.

  • Microsoft Office Access SQL では、ANSI SQL のワイルドカード文字と、 Like 演算子の指定項目の中で使われる Microsoft Office Access データベース エンジンに固有のワイルドカード文字の両方がサポートされています。ANSI SQL のワイルドカード文字と Microsoft Office Access データベース エンジンに固有のワイルドカード文字は互いに排他的です。このため、これらを同時に使用することはできず、どちらか一方を使用する必要があります。ANSI SQL のワイルドカード文字を使用できるのは、Microsoft Office Access データベース エンジンと Microsoft Office Access Database Engine OLE DB Provider を組み合わせて使う場合だけです。Microsoft Office Access または DAO を介して ANSI SQL のワイルドカード文字を使うと、リテラルとして解釈されます。Microsoft Office Access Database Engine OLE DB Provider を使用しているときは、Microsoft Office Access データベース エンジンのワイルドカード文字がリテラルとして解釈されます。Microsoft Access SQL supports both ANSI SQL wildcard characters and wildcard characters that are specific to the Microsoft Access database engine to use with the Like operator. The use of the ANSI and Microsoft Access database engine wildcard characters is mutually exclusive. You must use one set or the other and cannot mix them. The ANSI SQL wildcards are only available when using the Microsoft Access database engine and the Microsoft Access Database Engine OLE DB Provider. If you try to use the ANSI SQL wildcards through Microsoft Access or DAO, then they will be interpreted as literals. The opposite is true when using the Microsoft Access Database Engine OLE DB Provider.

    一致する文字Matching character

    Microsoft Access SQLMicrosoft Access SQL


    任意の 1 文字Any single character


    _ (アンダースコア)_ (underscore)

    0 文字以上の文字列Zero or more characters



  • 一般的に、Microsoft Access SQL の方が ANSI SQL よりも制限がありません。たとえば、式のグループ化や並べ替えが可能です。Microsoft Access SQL is generally less restrictive. For example, it permits grouping and ordering on expressions.

  • Microsoft Access SQL では、ANSI SQL よりも強力な式がサポートされています。Microsoft Access SQL supports more powerful expressions.

Microsoft Access SQL の拡張機能Enhanced features of Microsoft Access SQL

Microsoft Access SQL には、次の拡張機能があります。Microsoft Access SQL provides the following enhanced features:

  • クロス集計クエリをサポートする TRANSFORM ステートメント。The TRANSFORM statement, which provides support for crosstab queries.

  • StDevVarP などの 集計関数Additional aggregate functions, such as StDev and VarP.

  • パラメーター クエリの定義に使用する PARAMETERS 宣言。The PARAMETERS declaration for defining parameter queries.

Microsoft Access SQL でサポートされていない ANSI SQL 機能ANSI SQL features not supported in Microsoft Access SQL

Microsoft Access SQL では、ANSI SQL の次の機能がサポートされていません。Microsoft Access SQL does not support the following ANSI SQL features:

  • DISTINCT 集計関数の参照。たとえば、Microsoft Access SQL では、SUM(DISTINCT columnname) のような DISTINCT 集計関数の参照がサポートされていません。DISTINCT aggregate function references. For example, Microsoft Access SQL does not allow SUM(DISTINCT columnname).

  • クエリが返す行数を制限する LIMIT TO nn ROWS 句。クエリの適用範囲を制限するために使用できるのは、WHERE 句のみです。The LIMIT TO nn ROWS clause used to limit the number of rows returned by a query. You can use only the WHERE clause to limit the scope of a query.