User Guide for DARTS Astrophysical Data Search
[ 英語 | 日本語 ]
SQL Search, ADQL Search の使い方
SQL Search および ADQL Search においては、SQL文を直接入力することで、条件を自由に設定しての検索が可能です。 データベース化されているデータ項目を自由に用いての、独自の検索条件の組み立てや、複数項目での並べ替えなども可能です。
SQL / ADQL の基本構文
統合検索システムにおいては、RDBMS として PostgreSQL を、 またその拡張機能として PgSphere を採用しており、 それらに固有の関数等も用いることが出来ます。
ADQL の規格は IVOA Recommendation に定義されています。 標準SQL規格の SQL92 をベースに整備された拡張機能で、即ち標準SQLにはない機能が加えられているため、 ADQL Searchにおいては、入力された ADQL 文を、 PgSphere を備えた PostgreSQL が解釈できる SQL に変換し、データベースへ問合せを行います。
ここでは SQL や ADQL の もっとも基本的な構文について簡単に説明します。 以下に示す構文の中で、 {選択肢1|選択肢2} は指定すべき値(記号や数値、データ項目名など)や、 指定方式(カンマ区切りで列記するなど)の選択肢を表します。 [ 句 ] は省略可能な句であることを表します。
SELECT {*|column1,column2 column3,...}
FROM table_name
[ WHERE conditions ]
[ ORDER BY column1, column4, ... ]
[ LIMIT {number|ALL} [ OFFSET number ]
;
SELECT
TOP number
{*|column1,column2,column3,...}
FROM table_name
[ WHERE conditions ]
[ ORDER BY column1, column4, ... ]
;
SELECT
句-
FROM
句に指定するテーブルに含まれるデータ項目のうち、 検索結果として入手したいものをカンマ区切りで列記します。必須項目です。FROM
句に指定するテーブルに含まれるデータ項目の全てが必要な場合には、 アスタリスク「*
」で代用できます。 各テーブルのデータ項目については、以下のテーブル構成を参照してください。 FROM
句- 検索対象とするテーブル名を指定します。必須項目です。
WHERE
句-
検索条件を指定します。複数の検索条件を組み合わせて検索したい場合には、
AND
またはOR
で結合します。AND
はOR
より優先するので、OR
を優先させたい場合には括弧「( )
」でくくります。 ORDER BY
句-
検索結果の並び順の基準とするデータ項目を指定します。
項目名の後に
ASC
とつけるとその項目の昇順に、DESC
とつけるとそのデータ項目の降順に並べられます。 デフォルトは昇順なので、ASC
は省略可能です。 また複数のデータ項目をカンマ,
区切りで指定すると、 先に指定した項目で並べた中で同位のものがあった場合に次に指定したデータ項目の順に並べられます。 LIMIT
句 /TOP
句-
検索結果として取得したい件数の上限(および取得開始位置)を指定できます。任意項目ですが、意図せず大量のデータが検索にヒットした場合にブラウザの応答速度が著しく低下することがありますので、適度な上限件数を指定されることをお勧めいたします。
この仕様は標準SQL規格では明確に定められていないため、データベースシステムのベンダーによって実装が異なっており、 PostgreSQL では
LIMIT
句を用いる書き方が実装されています。 一方、標準SQL規格の SQL92 をベースに拡張整備された ADQL ではTOP
句が定義されています。
統合検索システムにおいては、それぞれの仕様・規格に基づき、 SQL Search ではLIMIT
句を、 ADQL Search ではTOP
句を用いることとしています。SQL Search における構文は下記の通りです。
LIMIT {number|ALL} [ OFFSET {number} ]
OFFSET
には、行を返し始める前に飛ばす行数を指定します。OFFSET 0
は、OFFSET
句を省略した場合と同じです。 すなわちOFFSET
句を省略してLIMIT
句のみ指定した場合には、 検索結果の 1 件目からLIMIT
句で指定した件数までを返します。OFFSET
およびLIMIT
の両者が指定された場合には、OFFSET
分の行を飛ばしてから、返されるLIMIT
行を数え始めます。ADQL Search における構文は下記の通りです。
TOP number
検索結果の 1 件目からTOP
句で指定した件数までを返します。 - 終端文字
;
-
SQL 文の終端として認識されます。必須項目ですが、統合検索システムにおいては省略可能です。
また統合検索システムにおいては、入力の途中に終端文字
;
を挿入して 複数の SQL 文を一度に実行することを許可していません。ひとつの SQL 文のみを入力・実行してください。
なお、DARTS/AKARI CAS ページに SQL tutorial や SQL general reference など SQL に関する基本的な構文、関数等の解説が掲載されていますので、合わせてご活用ください。
SQL / ADQL の例文および解説の表示
典型的な検索条件や天文学においてよく用いられる検索条件については、 SQL や ADQL の例文を用意してあります。 "Call example" の各ボタンを押すと、 "SQL Query" や "ADQL Query" の入力欄に例文が、 またその解説が入力欄の下に表示されます。 これを基に、検索したいテーブルや検索条件等を編集することができます。
ここにも簡単に解説を記載します。
検索カテゴリ | 実現方法・SQL例 |
---|---|
Ranges Search |
値の比較による検索には、以下のような演算子を使用できます。
|
And, Or |
複数の条件を組み合わせて検索したい場合には、条件同士を
AND または OR でつなげます。
AND は OR よりも優先するので、
OR を優先したい場合には括弧「() 」でくくります。
|
Mutiple match |
複数値のうちいずれかと一致する(いずれにも一致しない)データを検索する場合には、
IN 句を利用すると便利です。
構文は以下のようになります。
= と OR 、
または != と AND
を用いて次のように書くことと同じ意味になります。
|
Pattern match |
パターンマッチングを行うには、LIKE 演算子を用います。
'%' や '_' を
ワイルドカードとしてではなく通常の文字として扱いたい場合には、
記号の前にエスケープ文字としてバックスラッシュ「\」を前に付加して下さい。 |
Radial Search |
円形検索を行うには、PgSphere の機能を用いると便利です。 データ型には以下のようなものがあります。
ADQL Search においても同様の機能があります。 データ型には以下のようなものがあります。
|
Multipul Radial Search |
複数の天体についてのデータを一気に検索したい場合は、例えば
複数の円形検索条件を OR でつなげ、
複数の円形領域のいずれかに含まれるデータを検索する方法があります。逆に複数の円形領域のいずれにも含まれるデータに絞込みたい時には、 各円形検索条件を AND でつなげます。
|
Rectanglar Search |
観測中心点などのある1点が指定する矩形領域に含まれるデータを検索するには、
経度、緯度のそれぞれについて値の範囲を指定するのが簡単です。
上記は
BETWEEN 構文を用いて以下のように書くこともできます。
BETWEEN 構文を用いる場合には、
境界の値が含まれるか否か(「~以上」と「~より大きい」、「~以下」と「~未満」の違い)に注意してください。
観測視野などの領域が指定する矩形領域と重なっているものを検索するには、Radial Search(円形検索)と同様に、 PgSphere の機能を用いると便利です。 上述の Radial Search の項を参照してください。 |
検索結果表示のカスタマイズ
SQL Search, ADQL Searchにおける検索結果は、HTML 形式もしくはCSV形式のいずれかで出力することができます。"Format" にて html または csv のいずれかを指定してください。
使用したSQLの表示
リンク "Show the used SQL" をクリックすると、システム内部で実行したSQL文がポップアップで表示されます。この SQL 文をコピーして SQL Search の入力欄 "SQL query" に貼り付ければ、ソート条件を変えるなどアレンジを加えて検索、出力することができます。
データの一括ダウンロード
リンク "Download Wgetscript" をクリックすると、Wget スクリプトをダウンロードできます。このスクリプトを自分のマシン上で実行すれば、検索にヒットしたデータを一括でダウンロードすることが出来ます。