生SQLを使ったデータの挿入

SQLコマンドINSERTは,データベースにデータを挿入するときに使う.これは「データの挿入」に記載のようにWolfram言語コマンドのSQLInsertでもできる.

このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.

データを挿入すると,SQLExecuteの結果はクエリの影響を受ける行数を示す整数となる.

以下にデータを挿入するする例を示す.DatabaseLink をロードし,demoデータベースに接続する.

生SQLを使った表の作成」に記載のように,表ADDRESSES,MAILERが作成される.

SQL文を使って表ADDRESSESに行を挿入する例である.

SELECT文で,表にデータが加えられたことを確認する.

列USERNAMEは主キーとなる.つまりこれは重複してはならない.同じデータを再び挿入しようとするとエラーが生じ,結果は$Failedとなる.

次はパラメータUSERNAMEを重複しないようにする.ADDRESS,CITY,ZIPCODEの項目はそのままである.これらも重複してはならないので,エラーが生じる.

ADDRESS,CITY,ZIPCODEが重複しないように値を挿入する.

SELECT文で表にデータが加えられたことを示す.

データの挿入には準備文の方が役立つことがある.また,SQLArgumentを使うと準備文中の引数領域の数が減って便利であることもある.SQLArgumentについては「SQLExecute:SQLスタイルのクエリにおける引数の列」をご覧いただきたい.

SELECT文で表にデータが加えられたことを確認する.

識別列は自動的に値が増加されるため値を必要としないので,大変便利である.これらは表の主キーでもある.つまり一意的に行を識別するのである.識別値はSQL文ではNullと指定しなければならない.

SELECT文で表にデータが加えられたことを確かめる.

USERNAMEは外部キーなので,その値はADDRESSESに存在しなければならない.次の例は,user4 が ADDRESSESに存在しないために失敗する.

列SENDMAILERはデフォルト値を持っているため,データの挿入時には必要ない.

SELECT文でデータベースにデータが存在し,値を結び付けていることを確認する.

表を削除し,接続を閉じる.