Microsoft Access SQL と ANSI SQL の比較

適用先: Access 2013、Office 2013

Microsoft Access データベース エンジン SQL は、ANSI 文字セット 89 レベル 1 の仕様にほぼ準拠しています。 ただし、一部の ANSI SQL 機能は Microsoft Access SQL では実装されていません。 その一方で、ANSI SQL ではサポートされていない予約語や機能が実装されています。

主な違い

  • Microsoft Office Access SQL と ANSI SQL とでは、異なる予約語およびデータ型があります。 詳細については、「SQL 予約語」および「Microsoft Jet データベース エンジン SQL と ANSI SQL のデータ型」を参照してください。 Microsoft Office Access Database Engine OLE DB Provider と組み合わせて使うと、追加の予約語を使用できます。

  • Between...And

    expr1 [NOT] value1value2の間

    Microsoft Access SQL では、引数 value1 に引数 value2 より大きい値を指定できますが、ANSI SQL では引数 value1 は必ず引数 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

    ANSI SQL

    任意の 1 文字

    ?

    _ (アンダースコア)

    0 文字以上の文字列

    *

    %

  • 一般的に、Microsoft Access SQL の方が ANSI SQL よりも制限がありません。 たとえば、式のグループ化や並べ替えが可能です。

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

Microsoft Access SQL の強化された機能

Microsoft Access SQL には、次の拡張機能があります。

  • クロス集計クエリをサポートする TRANSFORM ステートメント。

  • StDevVarP などの 集計関数

  • パラメーター クエリの定義に使用する PARAMETERS 宣言。

Microsoft Access SQL ではサポートされていない ANSI SQL 機能

Microsoft Access SQL では、ANSI SQL の次の機能がサポートされていません。

  • DISTINCT 集計関数の参照。 たとえば、Microsoft Access SQL では、SUM(DISTINCT columnname) のような DISTINCT 集計関数の参照がサポートされていません。

  • クエリが返す行数を制限する LIMIT TO nn ROWS 句。 クエリの適用範囲を制限するために使用できるのは、WHERE 句のみです。