オブジェクト問い合わせ言語

オブジェクト問い合わせ言語 (オブジェクトといあわせげんご、オブジェクト照会言語、OQL、) は、Object Data Management Group (ODMG) に準拠したオブジェクトデータベースに対する問い合わせと更新を行うための宣言型の問い合わせ言語 (データベース言語) である。
OQLは、宣言型言語であり、手続き型言語ではない。
OQLは、関係データベース (リレーショナルデータベース) の問い合わせ言語 (データベース言語) SQL をもとにしている。
OQLは、ODMGによって開発され標準仕様として公開された。
OQLは、全体的に仕様が複雑であるため、これまでのところOQLを完全に実装しているオブジェクトデータベース開発企業は、一社もない。
OQLは、いくつかのOQL以降に開発された問い合わせ言語の設計に影響をあたえた。
そうした問い合わせ言語の例としては、JDOQLとEJBQLがある。
しかしながら、JDOQLとEJBQLは、OQLから派生した技術とは位置づけられていない。

 SQLとの違い 

OQLとSQLとの重要な違いを示すIBM OQL入門: http://publib.boulder.ibm.com/infocenter/tivihelp/v8r1/index.jsp?topic=/com.ibm.netcool_precision.doc/pr35se/xF1118340.html。

 OQLは、表内でオブジェクトへの参照を扱うことができる。オブジェクトは、入れ子構造にすることができる (ネストさせることができる) 。
 SQLのすべてのキーワードがOQLでも使えるわけではない。Netcool/Precision IP とは関連のないキーワードは、OQLの文法から除去されている。
 OQLは、OQL文のなかで数学的な計算を行うことができる。

 OQLの一般的な特徴 

OQL文には次の特徴がある。

 OQLの完全な文の連なりは、セミコロンで終了する。
 OQL文のなかのエントリのリストは、多くの場合はコンマで区切られるが、コンマで終了することはない
 テキストの文字列は、シングルクォーテーションのペアもしくはダブルクォーテーションのペアでくくられる。

 簡単な例 

次の例は、すべてのパーソナルコンピュータ (PC) のうち主記憶装置 (RAM) が64MB以上であるもののCPUの速度を、架空のPCデータベースからどのように問い合わせるかを示す。

SELECT pc.cpuSpeed
 FROM PCs pc
 WHERE pc.ram > 64

 グループ化と集約をともなう問い合わせ 

次の例は、主記憶装置 (RAM) の容量の平均を、製造者ごとに、どのように問い合わせるかを示す。

SELECT manufacturer, AVG(SELECT part.pc.ram FROM partition part)
 FROM PCs pc
 GROUP BY manufacturer: pc.manufacturer

partition キーワードを使っていることに注意。
従来のSQLとは逆の方法で集約を行っている。

 関連項目 

 Object Data Management Group (ODMG)
 オブジェクト定義言語 (ODL, Objecgt Definition Language)

 脚注 

Category:問い合わせ言語
Category:オブジェクト指向