表の作成
データベースに新しい表を作るには,SQLCreateTableを使う.これは,「生SQLを使った表の作成」に記載のように,SQLコマンドをそのまま使ってもできる.
このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.
表を作成する際,SQLCreateTableの結果はクエリの影響を受ける行数を指定する整数となる.表が正しく作られた場合は,新しい表の作成の際に影響する行はないため,この整数は必ずゼロとなる.
| SQLCreateTable[conn,table,{columns},opts] | SQL表を作成する |
DatabaseLink をロードし,demoデータベースに接続します.
Needs["DatabaseLink`"];
conn = OpenSQLConnection["demo"];表の作成にはSQLCreateTableを使う.列はSQLColumn式のリストで与えられる.次の例では,新しい表DATATYPESTABLEを作成する.この表には,SQLDataTypeNamesが返したデータ型1つにつき1つの列がある.列TINYINTCOLはNullに設定できないように指定する.しかし各列のバイナリはNullに設定できる."Nullable"オプションが指定されていない他の列にはデータベースの"Nullable"のデフォルトが使われる.文字ベースの列は特定の長さに制限される.他の列は型に応じてデフォルトのデータ長が使われる.
SQLDataTypeNames[conn]SQLCreateTable[conn, "DATATYPESTABLE",
{
SQLColumn["TINYINTCOL", "DataTypeName" -> "TINYINT", "Nullable" -> False],
SQLColumn["SMALLINTCOL", "DataTypeName" -> "SMALLINT"],
SQLColumn["INTEGERCOL", "DataTypeName" -> "INTEGER"],
SQLColumn["BIGINTCOL", "DataTypeName" -> "BIGINT"],
SQLColumn["NUMERICCOL", "DataTypeName" -> "NUMERIC"], SQLColumn["DECIMALCOL", "DataTypeName" -> "DECIMAL"],
SQLColumn["FLOATCOL", "DataTypeName" -> "FLOAT"],
SQLColumn["REALCOL", "DataTypeName" -> "REAL"],
SQLColumn["DOUBLECOL", "DataTypeName" -> "DOUBLE"], SQLColumn["BITCOL", "DataTypeName" -> "BIT"],
SQLColumn["LONGVARBINARYCOL", "DataTypeName" -> "LONGVARBINARY", "Nullable" -> True],
SQLColumn["VARBINARYCOL", "DataTypeName" -> "VARBINARY(1024)", "Nullable" -> True],
SQLColumn["BINARYCOL", "DataTypeName" -> "BINARY", "Nullable" -> True],
SQLColumn["LONGVARCHARCOL", "DataTypeName" -> "LONGVARCHAR"],
SQLColumn["VARCHARCOL", "DataTypeName" -> "VARCHAR", "Nullable" -> True, "DataLength" -> 5],
SQLColumn["CHARCOL", "DataTypeName" -> "CHAR", "Nullable" -> True, "DataLength" -> 3],
SQLColumn["DATECOL", "DataTypeName" -> "DATE"], SQLColumn["TIMECOL", "DataTypeName" -> "TIME"],
SQLColumn["TIMESTAMPCOL", "DataTypeName" -> "TIMESTAMP"],
SQLColumn["OBJECTCOL", "DataTypeName" -> "OBJECT", "Nullable" -> True]
}]SQLTableNamesを使って表がデータベースに存在することを確認する.
SQLTableNames[conn, "DATATYPESTABLE"]SQLColumnNamesで表中の列を確認する.
SQLColumnNames[conn, "DATATYPESTABLE"]SQLCreateTableには適用できるオプションが2つある.
SQLCreateTableのオプション
オプション"Timeout"を使うと,実行に時間がかかりすぎるクエリをキャンセルすることができる."Index"は1つまたは複数の列に指標を加えることができる.
SQLCreateTable[conn, SQLTable["TEST1"], {SQLColumn["id", "DataTypeName" -> "Integer", "PrimaryKey" -> True],
SQLColumn["Name", "DataTypeName" -> "VARCHAR", "DataLength" -> 255],
SQLColumn["Age", "DataTypeName" -> "INTEGER"]},
"Index" -> {"Name", "Age"}
]SQLDropTable[conn, "DATATYPESTABLE"];
SQLDropTable[conn, "TEST1"];
CloseSQLConnection[conn];データベースによっては,列がキーであるかどうか,または自動インクリメントであるかどうか等,列についてのより詳細なオプションをサポートしていることもある.このようなオプションが必要な場合は,SQL文を使って表を作成する.「生SQLを使った表の作成」で,その考え方と例を示す.