DatabaseLink チュートリアル関数

データの選択

SQLSelectはデータベースのデータを選択して返します.これは,生SQLを使ったデータの選択に記載のように,SQLコマンドをそのまま使ってもできます.
このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているようにDatabaseExamples`パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれません.
SQLSelect[conn,table,opts]表のすべてのデータを選択する
SQLSelect[conn,{tables},{columns}]表の特定の列のデータを選択する
SQLSelect[conn,{tables},{columns},condition,opts]条件を満たす表の特定の列のデータを選択する

データベースからのデータの取出し

DatabaseLink をロードし,publisher データベースに接続します.
In[1]:=
Click for copyable input
ROYSCHED 内のすべてのデータを取り出します.
In[3]:=
Click for copyable input
Out[3]=
SQLSelectの第3パラメータは,特定の列のみを選択したいときに使用できます.次の例では列TITLE_IDROYALTY だけを選択します
In[4]:=
Click for copyable input
Out[4]=
データベース操作の結果はそのままMathematica で使えます.
In[5]:=
Click for copyable input
Out[5]=
SQLSelectには数々のオプションが使えます.
オプション名デフォルト値
"SortingColumns"Noneデータのソート方法
"Distinct"False重複しない結果だけを返すかどうかの設定
"GetAsStrings"False結果を文字列として返すかどうかの設定
"MaxRows"Automatic返される最大行数を設定する
"ShowColumnHeadings"False結果とともに列を返すかどうかの設定
"Timeout"Automaticクエリのタイムアウトを設定する

SQLSelectのオプション

複数の表の複数の列からデータを選択することもできます.複数の表は,第2引数で表の名前のリストを指定すると選べます.列名のリストは前述のように第3パラメータで指定します.表の名前と列名をペアでリストにして第3引数で指定することで,特定の表の名前と列の名前を関連付けることもできます.これは複数の表で同じ列名が使われているときに重要です.次は2つの表のデータを組み合せて外積を求める例ですが,最初の5つの結果のみを表示させるためにオプション"MaxRows"を使います.
In[6]:=
Click for copyable input
Out[6]//TableForm=
次の例でも同じクエリを繰り返しますが,2つの表のTITLE_ID が同じでなければならないという条件を加えます.条件を使うと検索結果を絞り込むことができ,便利です.
In[7]:=
Click for copyable input
Out[7]//TableForm=
列の値が特定の範囲内でなければならないという指定もできます.
In[8]:=
Click for copyable input
Out[8]=
In[9]:=
Click for copyable input
Out[9]=
次は列の値が特定の値でなければならないことを指定します.
In[10]:=
Click for copyable input
Out[10]=
今度は列の値が特定の値に等しくてはならないことを指定します.
In[11]:=
Click for copyable input
Out[11]=
列の値が特定の値より大きくなければならないことを指定します.
In[12]:=
Click for copyable input
Out[12]=
列の値が特定の値より小さくなければならないことを指定します.
In[13]:=
Click for copyable input
Out[13]=
列の値が特定の値以上でなければならないことを指定します.
In[14]:=
Click for copyable input
Out[14]=
列の値が特定のパターンに合致しなければならないことを指定することもできます.0文字以上のマッチングのためにはメタ文字「%」,1文字用にはメタ文字「_」を使います.
In[15]:=
Click for copyable input
Out[15]=
In[16]:=
Click for copyable input
Out[16]=
列の値がリストの一部として含まれていなければならないことを指定します.
In[17]:=
Click for copyable input
Out[17]=
列の値が特定の値以下でなければならないことを指定します.
In[18]:=
Click for copyable input
Out[18]=
AndOrを使って条件を組み合せることもできます.
In[19]:=
Click for copyable input
Out[19]=
In[20]:=
Click for copyable input
Out[20]=
オプション"GetAsStrings"を使うと,データをMathematica 型に変換しないで取り出すことができます.次の式はデータを変換せずに前と同じクエリを実行します.
In[21]:=
Click for copyable input
Out[21]//InputForm=
オプション"SortingColumns"を使ってデータをどのようにソートするかを指定することもできます.このオプションは規則のリストを取ります.規則の左辺で列を指定し,右辺で増加列,減少列のどちらでソートするのかを指定します.リストの最初の項目は,補助的な項目に優先します.
In[22]:=
Click for copyable input
Out[22]=
プロットすると,データがソートされたことが分かります.
In[23]:=
Click for copyable input
Out[23]=
オプション"Timeout"を使うと,実行に時間がかかりすぎるクエリをキャンセルすることができます.
接続を閉じます.
In[24]:=
Click for copyable input
Mathematica 式がデータベースに保管されている型にどのようにマップされるかについてはデータ型マッピングで詳しく述べます.