データの選択
SQLSelectはデータベースのデータを選択して返します.これは,
生SQLを使ったデータの選択に記載のように,SQLコマンドをそのまま使ってもできます.
このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,
データベースの例の使用で述べているように
DatabaseExamples`パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれません.
| SQLSelect[conn,table,opts] | 表のすべてのデータを選択する |
| SQLSelect[conn,{tables},{columns}] | 表の特定の列のデータを選択する |
| SQLSelect[conn,{tables},{columns},condition,opts] | 条件を満たす表の特定の列のデータを選択する |
データベースからのデータの取出し
DatabaseLink をロードし,
publisher データベースに接続します.
表
ROYSCHED 内のすべてのデータを取り出します.
| Out[3]= |  |
SQLSelectの第3パラメータは,特定の列のみを選択したいときに使用できます.次の例では列
TITLE_ID と
ROYALTY だけを選択します
| Out[4]= |  |
データベース操作の結果はそのまま
Mathematica で使えます.
| Out[5]= |  |
SQLSelectには数々のオプションが使えます.
| | |
| "SortingColumns" | None | データのソート方法 |
| "Distinct" | False | 重複しない結果だけを返すかどうかの設定 |
| "GetAsStrings" | False | 結果を文字列として返すかどうかの設定 |
| "MaxRows" | Automatic | 返される最大行数を設定する |
| "ShowColumnHeadings" | False | 結果とともに列を返すかどうかの設定 |
| "Timeout" | Automatic | クエリのタイムアウトを設定する |
SQLSelectのオプション
複数の表の複数の列からデータを選択することもできます.複数の表は,第2引数で表の名前のリストを指定すると選べます.列名のリストは前述のように第3パラメータで指定します.表の名前と列名をペアでリストにして第3引数で指定することで,特定の表の名前と列の名前を関連付けることもできます.これは複数の表で同じ列名が使われているときに重要です.次は2つの表のデータを組み合せて外積を求める例ですが,最初の5つの結果のみを表示させるためにオプション"
MaxRows"を使います.
Out[6]//TableForm= |
| |  |
次の例でも同じクエリを繰り返しますが,2つの表の
TITLE_ID が同じでなければならないという条件を加えます.条件を使うと検索結果を絞り込むことができ,便利です.
Out[7]//TableForm= |
| |  |
列の値が特定の範囲内でなければならないという指定もできます.
| Out[8]= |  |
| Out[9]= |  |
次は列の値が特定の値でなければならないことを指定します.
| Out[10]= |  |
今度は列の値が特定の値に等しくてはならないことを指定します.
| Out[11]= |  |
列の値が特定の値より大きくなければならないことを指定します.
| Out[12]= |  |
列の値が特定の値より小さくなければならないことを指定します.
| Out[13]= |  |
列の値が特定の値以上でなければならないことを指定します.
| Out[14]= |  |
列の値が特定のパターンに合致しなければならないことを指定することもできます.0文字以上のマッチングのためにはメタ文字「%」,1文字用にはメタ文字「_」を使います.
| Out[15]= |  |
| Out[16]= |  |
列の値がリストの一部として含まれていなければならないことを指定します.
| Out[17]= |  |
列の値が特定の値以下でなければならないことを指定します.
| Out[18]= |  |
Andや
Orを使って条件を組み合せることもできます.
| Out[19]= |  |
| Out[20]= |  |
オプション"
GetAsStrings"を使うと,データを
Mathematica 型に変換しないで取り出すことができます.次の式はデータを変換せずに前と同じクエリを実行します.
Out[21]//InputForm= |
| |  |
オプション"
SortingColumns"を使ってデータをどのようにソートするかを指定することもできます.このオプションは規則のリストを取ります.規則の左辺で列を指定し,右辺で増加列,減少列のどちらでソートするのかを指定します.リストの最初の項目は,補助的な項目に優先します.
| Out[22]= |  |
プロットすると,データがソートされたことが分かります.
| Out[23]= |  |
オプション"
Timeout"を使うと,実行に時間がかかりすぎるクエリをキャンセルすることができます.
Mathematica 式がデータベースに保管されている型にどのようにマップされるかについては
データ型マッピングで詳しく述べます.