生SQLを使ったデータの挿入
SQLコマンドINSERTは,データベースにデータを挿入するときに使う.これは「データの挿入」に記載のようにSQLInsertでもできる.
このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているように
パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.
データを挿入すると,SQLExecuteの結果はクエリの影響を受ける行数を示す整数となる.
以下にデータを挿入するする例を示す.DatabaseLink をロードし,demoデータベースに接続する.
「生SQLを使った表の作成」に記載のように,表ADDRESSES,MAILERが作成される.
SQL文を使って表ADDRESSESに行を挿入する例である.
| Out[5]= |  |
SELECT文で,表にデータが加えられたことを確認する.
| Out[6]= |  |
列USERNAMEは主キーとなる.つまりこれは重複してはならない.同じデータを再び挿入しようとするとエラーが生じ,結果は$Failedとなる.
| Out[7]= |  |
次はパラメータUSERNAMEを重複しないようにする.ADDRESS,CITY,ZIPCODEの項目はそのままである.これらも重複してはならないので,エラーが生じる.
| Out[8]= |  |
ADDRESS,CITY,ZIPCODEが重複しないように値を挿入する.
| Out[9]= |  |
SELECT文で表にデータが加えられたことを示す.
| Out[10]= |  |
データの挿入には準備文の方が役立つことがある.また,SQLArgumentを使うと準備文中の引数領域の数が減って便利であることもある.SQLArgumentについては「SQLExecute:SQLスタイルのクエリにおける引数の列」をご覧いただきたい.
| Out[11]= |  |
SELECT文で表にデータが加えられたことを確認する.
| Out[12]= |  |
識別列は自動的に値が増加されるため値を必要としないので,大変便利である.これらは表の主キーでもある.つまり一意的に行を識別するのである.識別値はSQL文ではNullと指定しなければならない.
| Out[13]= |  |
| Out[14]= |  |
SELECT文で表にデータが加えられたことを確かめる.
| Out[15]= |  |
USERNAMEは外部キーなので,その値はADDRESSESに存在しなければならない.次の例は,user4 が ADDRESSESに存在しないために失敗する.
| Out[16]= |  |
列SENDMAILERはデフォルト値を持っているため,データの挿入時には必要ない.
| Out[17]= |  |
SELECT文でデータベースにデータが存在し,値を結び付けていることを確認する.
Out[18]//TableForm= |
| |  |
表を削除し,接続を閉じる.