戻る

これはもうメモ帳でつくるvbsの話というよりはSQL文の書き方だな、と思いつつ〜

CREATE TABLE tbl00(fld1 String, fld2 Memo)
Stringってのは255文字しか入らない、Memoってのは20億文字ぐらい入る、ってのは前のページで書いたとおり。


数値型の場合は
Integer, Long, Double, Single
あたりがよく使われる気がします。
Integerはたしか±30000ぐらいまで
Longは±2000000000ぐらいまで
Integer, Long ともに整数のみ。
小数点が入るようならDoubleかSingle(この2つの違いは正直なところよく分かっていない。小数点以下の精度の違いらしいです。個人的にはDoubleにすることが多い)


日付時刻型なんてのもあったか。
Date
たぶんこいつの裏の正体はたった一つの数値だと思うんですが、データが 2012/03/05 とか 15:43:15 みたいなカタチなっているなら、とりあえずDateにしてください。


あとは二つに一つ型
YesNo


オートナンバー、インクリメント型なんてのも場合によっては必要になったりして。
Counter(1)
()の中は1でも2でも3でも、好きな数字で。


Set MyADOXC = CreateObject("ADOX.Catalog")
MyADOXC.Create ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='testDB'")
Set MyADOXC = Nothing
Set MyDbCnn = CreateObject("ADODB.Connection")
MyDbCnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='testDB'")
MyDbCnn.Execute ("CREATE TABLE testTBL(fld1 Counter(1), fld2 Date, fld3 Long, fld4 String, fld5 YesNo)")
MyDbCnn.Close
Set MyDbCnn = Nothing
↑まあこんな感じの書き方
このコードそのままコピーしてvbsファイルつくってダブルクリックすれば、同じフォルダ中にtestDBという名前のデータベースファイルが作成されます(違うフォルダにしたかったら'testDB'ファイル名だけじゃなく、フルパス書いてください)


テーブルつくるだけじゃ不満ですよね。インデックスぐらいつけられないと。
これも前のページでやったとおり。
CREATE INDEX MyIDX ON テーブル名(列名)
MyIDXってのは勝手につけた名前。puyoでもahyaでも何でもいいです。


主キーなんてのも必要か(一般的にはこれが一番重要かも)
ALTER TABLE テーブル名 ADD PRIMARY KEY(主キーにしたい列名)
主キーってのは1列とは限らないんで、複数にまたがる場合は(列1, 列2) な感じ。


Set MyADOXC = CreateObject("ADOX.Catalog")
MyADOXC.Create ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='testDB1'")
Set MyADOXC = Nothing
Set MyDbCnn = CreateObject("ADODB.Connection")
MyDbCnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='testDB1'")
MyDbCnn.Execute ("CREATE TABLE testTBL(fld1 Long, fld2 Long, fld3 String)")
MyDbCnn.Execute ("ALTER TABLE testTBL ADD PRIMARY KEY(fld1, fld2)")
MyDbCnn.Close
Set MyDbCnn = Nothing
↑みたいにテキトーなデータベースとテキトーなテーブルつくってテキトーな主キー付けることができるわけですが、これで本当に出来てるのかどうか、どうやって確認したらいいんだろ。
とりあえずパソコンにMSAccessが入ってる人は、testDBに".mdb"と拡張子をつけて開いてみてください。
MSAccessがない人はデータベースに接続してレコードセット開いてAddNewしてみてください。
何を言っているのかわからないという人は何もしないでください。


ついでに
データベースいじったことある人ならだいたい想像つくでしょうけど
接続さえすれば、CREATE TABLE, ALTER TABLE に限らず、いわゆるアクションクエリは.Execute("SQL")で全部実行できます。


リンクテーブルについてはこちら
「最適化」についてはこちら