EQLは、多くの点でSQLに似ていますが、いくつかの顕著な違いもあります。
このトピックで説明するEQLの概念は、SQLに詳しいユーザーはすでに理解している可能性があります。さらに、EQL固有の機能についても説明します。
- 表(スキーマは1つ)と、レコードのコレクション(スキーマは複数)。SQLは、レコードの表を中心として設計されており、1つの表のすべてのレコードが同じスキーマを持ちます。EQLの設計の中心にあるのは1つ以上のコレクションであり、このコレクションを構成するレコードのスキーマはそれぞれ異なります。
- EQL問合せとSQL問合せ。EQL文には、DEFINE句またはRETURN句が必要です。これは、SQLの共通表式(CTE)と同様に、一時的な結果セットを定義するものです。ただし、次の相違点があります。
- EQLでは、スキーマ宣言はサポートされません。
- EQLでは、CTEのスコープは問合せ全体です(直後の文のみではありません)。
- EQLでは、RETURNはCTEであり、通常の文(結果を生成するもの)でもあります。
- EQLでは、再帰はサポートされません。つまり、文自体のFROM句を使用した参照は、直接的にも間接的にも実行できません。
- EQLには、更新操作はありません。
- 句。EQLでは、SELECT、FROM、WHERE、HAVING、GROUP BYおよびORDER BYはいずれもSQLに似ていますが、次の点に注意してください。
- SELECT文では、属性を一字一句そのまま選択する場合は、AS別名付与は省略可能です。式を使用する文ではAS別名が必須です。別名付与は、SQLでは省略可能です。
- EQLでは、GROUP BYでは暗黙的なSELECTが実行されます。つまり、グルーピング属性は必ず、文の結果の中に含まれます(明示的に選択されたかどうかにかかわらず)。
- 複数割当て属性によるグルーピングを行うと、1つのレコードが複数のグループに存在する状態が発生することがあります。GROUP BY句でのMEMBERS拡張の使用によって、1つのレコードが複数のグループに存在できます。
- WHEREを集計式に適用できます。
- SQLでは、集計を使用すると暗黙的なグルーピングが行われます。EQLでは、グルーピングは常に明示的に行われます。
- 他の言語での比較。
- PAGEは、SQLに対する一般的なベンダー拡張の多くと同様の方法で動作します。
- EQLでは、JOIN式のブール結合条件はカッコで囲まれている必要があります。これは、SQLでは必要ありません。
- EQLでサポートされるのは、SELECT文のみです。その他のDML文(INSERTやDELETEなど)はサポートされず、DDL、DCL、TCLの文もサポートされません。
- EQLでサポートされるデータ型、式および関数は、SQL標準のものとは異なります。