DatabaseLink チュートリアル関数

データ型マッピング

データベースを使用する際の最も重要な問題のひとつに,データを保管するときとデータベースから取り出すときのデータの変換があります.このチュートリアルでは,データベースに保管されたデータとMathematica 式のインタラクトについて述べます.
次の表はデータ型とMathematica 式との間のマッピングを示しています.例えばMathematicaInteger式は,SQLのINTEGERTINYINT 等の整数型で保存できます.また,VARCHAR 型の列のデータを選択すると,これはMathematica ではString式となります.
Mathematica 式データ型
Stringほとんどの場合,CHAR,VARCHAR,LONGVARCHAR等のSQL型で使われる
Integerほとんどの場合,INTEGER,TINYINT,SMALLINT,BIGINT等のSQL型で使われる
Realほとんどの場合,DOUBLE,FLOAT,REAL等のSQL型で使われる
Trueほとんどの場合SQL型BITで使われる
Falseほとんどの場合SQL型BITで使われる
Nullほとんどの場合SQL型NULLで使われる
SQLBinaryほとんどの場合,BINARY,VARBINARY,LONGVARBINARY等のSQL型で使われる
SQLDateTimeほとんどの場合,DATE,TIME,TIMESTAMP等のSQL型で使われる
SQLExprMathematica 式を保管するための特別なバイナリデータ型

Mathematica 式とデータベースに保管されているデータ型のマッピング

StringIntegerRealTrueFalseNull等のMathematica の原子式,およびSQLBinarySQLDateTimeSQLExprで形成された複合式は,Javaオブジェクトに変換,またはJavaオブジェクトから変換されます.JavaオブジェクトはJDBCドライバで提供されているあらゆるエンコードまたはエスケープ機能を利用して,JDBC操作で処理されます.一般にこのようなドライバはクエリに渡す,あるいはクエリから受け取った値のエンコードのための,データベースに特有のコードを含んでいます.これらのドライバはデータベースの製造元により実装されていることも多いので,その機能を最大限利用するとよいでしょう.
データ型によっては,Mathematica 式が特別なラッパーを使わなければならないこともあります.例えばデータ型BINARY については,Mathematica 式はラッパーSQLBinaryを使用していなければなりません.これらのラッパーはコマンドの構成において不明瞭な点を取り除くために必要です.

SQLBinary

SQLBinaryは,データベース中のバイナリデータの操作に使用します.これは画像やコンパイルしたコードの保管に使えます.
このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているようにDatabaseExamples`パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれません.
DatabaseLink をロードし,demo データベースに接続します.
In[3]:=
Click for copyable input
GIF画像を含む文字列を生成します.
In[3]:=
Click for copyable input
Out[3]=
ToCharacterCodeを使って,画像を表すバイトのリストを作ります.このリストをSQLBinaryで囲みます.
In[4]:=
Click for copyable input
次に例題用の表を作ります.
In[5]:=
Click for copyable input
Out[5]=
表にデータを挿入します.
In[6]:=
Click for copyable input
Out[6]=
SQLSelectを使ってデータを取り出します.これはバイナリデータなので,SQLBinary式で返されます.
In[7]:=
Click for copyable input
その後,FromCharacterCodeを使ってデータを文字列に戻します.
In[8]:=
Click for copyable input
最後にデータをインポートし,表示します.
In[9]:=
Click for copyable input
Out[9]=
表を削除し,接続を閉じます.
In[10]:=
Click for copyable input

SQLDateTime

SQLDateTimeは,データベースの日付と時間の操作に使います.これを使うと日付,時間情報を保管したり取り出したりすることができます.また,特定の日付または時間に依存するクエリを実行することもできます.
このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているようにDatabaseExamples`パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれません.
DatabaseLink をロードし,demo データベースに接続します.
In[12]:=
Click for copyable input
例題用の表を作成します.この表にはDATETIMEDATETIMETIMESTAMP 列が含まれます.
In[3]:=
Click for copyable input
Out[3]=
表にデータを挿入します.TIME 以外のデータ型にはMathematica の関数DateList[]の出力が使えます.TIME には時間,分,秒を指定する3つの整数のリストを指定しなければなりません.DATEDateList[]の日付情報のみを使用し,時間情報は使わないことにご注意ください.DATETIMETIMESTAMP はどちらの情報も使い,またナノ秒を使います.
In[4]:=
Click for copyable input
Out[4]=
データベースからデータを取り出すにはSQLSelectを使います.データはSQLDateTime式で返されます.
In[5]:=
Click for copyable input
Out[5]=
表を削除し,接続を閉じます.
In[6]:=
Click for copyable input

SQLExpr

Mathematica 式をデータベースに保管するときはSQLExprを使います.保管したものを取り出すときはMathematica 式に戻されます.
このセクションの例を実際に試してみて,記載の通りに動作しなかった場合は,データベースの例の使用で述べているようにDatabaseExamples`パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれません.
DatabaseLink をロードしdemo データベースに接続します.
In[8]:=
Click for copyable input
Mathematica 式を保管するには,VARCHAR 等の文字列を保管するために使える列を作る必要があります.
In[3]:=
Click for copyable input
Out[3]=
データベースにMathematica 式を挿入します.
In[4]:=
Click for copyable input
Out[4]=
SQLSelectでデータをデータベースから取り出します.データはSQLExpr式として返されます.
In[5]:=
Click for copyable input
Out[5]=
表を削除して接続を閉じます.
In[6]:=
Click for copyable input