| 家族 | クエリ言語 |
|---|---|
| デザイン: | マイケル・ストーンブレーカー |
| 初登場 | 1976年 |
| 主な実装 | |
| イングレス、ポストクエル | |
| 影響を受けた | |
| アルファ | |
QUEL は、タプル関係計算に基づくリレーショナル データベース クエリ言語で、 SQLといくつかの類似点があります。これは、カリフォルニア大学バークレー校のIngres DBMS の取り組みの一環として、 Coddが以前に提案したものの実装されなかったデータ サブ言語 ALPHAに基づいて作成されました。QUEL は、無料で入手できる Ingres ソース コードに基づくほとんどの製品で短期間使用されましたが、最も有名なのはPOSTGRESによってサポートされている POSTQUEL と呼ばれる実装です。[1] 1980 年代初頭にOracleとDB2 が市場シェアを獲得したため、当時 QUEL をサポートしていたほとんどの企業は SQL に移行しました。 [要出典] QUEL は Ingres DBMS の一部として引き続き利用できますが、長年 QUEL 固有の言語拡張機能は追加されていません。[いつ? ]
使用法
QUEL文は常にタプル変数によって定義され、クエリを制限したり、結果セットを返したりするために使用できます。最初のオリジナルのIngres論文の1つから引用した次の例を考えてみましょう。[2]
Eの範囲はEMPLOYEEで、W ( COMP = E. Salary / ( E. Age - 18 ))に取得されます。ここで、E . Name = " Jones"
ここで、E は EMPLOYEE リレーションにまたがるタプル変数であり、そのリレーション内で条件 `E.Name = "Jones"` を満たすすべてのタプルが検索されます。クエリの結果は、条件を満たす各タプルに対して計算された単一のドメイン COMP を持つ新しいリレーション W です。その後、リレーション W に対して追加のクエリを実行できます。
同等の SQL ステートメントは次のとおりです。
テーブルWを作成し、SELECT ( E . salary / ( E . age - 18 ))をCOMPとして、 Employee as Eとして、 E を E として作成します。ここで、E . name = 'Jones'です。
この例では、リレーションは新しいテーブル W に格納されています。これは、QUEL バージョンの直接の類似物ではありません。QUEL のリレーションは、ほとんどの最新の SQL 実装で見られる一時テーブルに似ています。
以下は、テーブルを作成し、そこに行を挿入し、その中のデータを取得して変更し、最後に追加された行を削除する (名前が一意のフィールドであると仮定) という単純なセッションのサンプルです。
QUEL のもう 1 つの機能は、レコードをシステム内外に一括して移動するための組み込みシステムです。次のコマンドを考えてみましょう。
学生(名前= c0 、カンマ= d1 、年齢= c0 、カンマ= d1 、性別= c0 、カンマ= d1 、住所= c0 、nl = d1 )を"/student.txt"にコピーします。
これにより、学生テーブルのすべてのレコードのコンマ区切りファイルが作成されます。 d1 は、データ型ではなく区切り文字を示します。 をintoに変更すると、プロセスが逆になります。 同様のコマンドは多くの SQL システムで使用できますが、通常は SQL 言語の内部ではなく、外部ツールとして使用できます。そのため、ストアド プロシージャfromでは使用できません。
QUEL には非常に強力な集計機能があります。集計はネストすることができ、異なる集計には独立した by-list や制限句を含めることができます。例:
取得( a = count ( y . i by y . d where y . str = "ii*" or y . str = "foo" ), b = max ( count ( y . i by y . d )))
この例は、QUEL のあまり望ましくない癖の 1 つ、つまり、すべての文字列比較が潜在的にパターン マッチであることを示しています。 は、 で始まるy.str = "ii*"すべてのy.str値と一致しますii。対照的に、SQL は=、完全一致の場合のみ を使用し、likeパターン マッチングが必要な場合は を使用します。
参照
- D4 (プログラミング言語) (D の実装)
- リレーショナル代数
- 関係計算
参考文献
- ^ Stonebraker, M ; Rowe, LA (1986 年 5 月). POSTGRES の設計(PDF) . Proc. 1986 ACM SIGMOD Conference on Management of Data. ワシントン DC.
- ^ Stonebraker, Michael ; Wong, Eugene; Kreps, Peter; Held, Gerald (1976). 「INGRES の設計と実装」ACM Transactions on Database Systems . 1 (3): 191. CiteSeerX 10.1.1.109.957 . doi :10.1145/320473.320476.
さらに読む
- CJ Date: SQLデータベース言語の批評。SIGMODレコード14(3):8-54、1984年。
