DATABASELINK チュートリアル

データの選択

SQLSelectはデータベースのデータを選択して返す.これは,「生SQLを使ったデータの選択」に記載のように,SQLコマンドをそのまま使ってもできる.

このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているようにパッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない..

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_IDとROYALTYだけを選択する.

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つの結果のみを表示させるためにオプションを使う.

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]=

オプションを使うと,データを Mathematica 型に変換しないで取り出すことができる.次の式はデータを変換せずに前と同じクエリを実行する.

In[21]:=
Click for copyable input
Out[21]//InputForm=

オプションを使ってデータをどのようにソートするかを指定することもできる.このオプションは規則のリストを取る.規則の左辺で列を指定し,右辺で増加列,減少列のどちらでソートするのかを指定する.リストの最初の項目は,補助的な項目に優先する.

In[22]:=
Click for copyable input
Out[22]=

プロットすると,データがソートされたことが分かる.

In[23]:=
Click for copyable input
Out[23]=

オプションを使うと,実行に時間がかかりすぎるクエリをキャンセルすることができる.

接続を閉じる.

In[24]:=
Click for copyable input

Mathematica 式がデータベースに保管されている型にどのようにマップされるかについては「データ型マッピング」に詳しく記載されている.

New to Mathematica? Find your learning path »
Have a question? Ask support »