データベース内にテーブルを作成する
前回はサーバーの中にデータベースを用意しました。今回はデータベースの中にテーブルを用意します。
最終的にはExcelVBAを使ってこのテーブルから情報を取得したり追加、削除すできる様にします。
テーブルはSQL文を使っても作成できます。
今回はSQLServerManegementStudio内での手作業でテーブルを用意していきます。
SQL文を使ってテーブルを作成しない理由は「このブログはあくまでエクセルがメイン」だからです。
SQL文を学習するわけではなくExcel×RDBMSの環境を用意する事を考えて記事を用意しています。
そのために出来るだけ簡単な方法を選んで解説します。
よって用意した環境内でRDBMS内の情報を扱うにはSQL文の知識はマストですが今回は省略します。
参考:SQL文を生成してくれるAIツールを紹介しています。
おすすめVBA×AIでコードを作成|GPTExcelが無料で全機能を開放
前回記事
Appをインストールした後の初期設定について学習しました。
インストールしただけでは使えない【VBA×SQL】SQLServerインストール後の認証等の設定
この記事はシリーズで情報をお届けしています
この記事はVBAの中でSQLの使い方を紹介するシリーズの4番目の記事です。
シリーズ初回の記事はこちらです。通して見ていただくとより理解が進みます。
VBA×SQL-1【VBA×SQL】メリットや使い方、環境構築の方法を画像で解説
おさらい
前回記事ではSQLServer認証について触れました。
インストール時にデフォルトで用意されるsaというログインオブジェクトに設定を施しています。
saというログイン名と任意で設定したパスワードでAppにログイン出来る様にしました。
「testDB」というデータベースも用意しています。今回はデータベース内にテーブルを作成していきます。
テーブルを作成
テーブルを作成していきましょう。テーブルは先に外枠を作ってから中に情報を格納します。
テーブルの外枠を用意する
「testDB」左のプラスボタンを左クリック。展開されるとテーブルという情報が出てきます。
「テーブル」の上で右クリック。
新規作成→テーブルの順でマウスホバーし「テーブル」の上で左クリック。
画面中央から右側にdbo.table1というタブでテーブルのカラム(列)に対してデータ型を決めていきます。
ここでは数値が入るidという名前の列と文字列が入るnameという名前の列を用意しました。
加えてidという列には主キーを設定しています。
その後「ctrl+S」を押下すると「名前の選択」といういダイアログボックスが立ち上がります。
ここでテーブルの名前を付けます。今回は「kojin」という名前にしました。
最後にOKボタンの上で左クリック。これでテーブル「kojin」の外枠が完成しました。
オブジェクトエクスプローラーの上部にグレーの部分(バー)があります。
右から2番目の「最新の情報に更新」というアイコンをクリックするとテーブルのアイコンが表示されます。
緑の矢印で円をかいたようなマークです。カーソルを合わせると「最新の情報に更新」という表示が出ます。
キーワードの整理
聞き慣れない言葉が沢山出てきました。
- テーブルのカラム(列)
- 主キー
- データ型
ひとつずつ見ていきます。
テーブルのカラム(列)
カラムとはテーブルを列方向に1列ずつ区切った時の1つの列を指しています。
行方向も同じ様にカタカナの呼び方があります。行はレコードと呼びます。
エクセルだと列、行と呼びますがRDMBSやAccessだとカラム(列)とレコード(行)になります。
主キー
ExcelでもVLOOKUP関数が使える人や正規化が分かっている人は理解出来ているはずです。
主キーはレコードを1件に絞る際にカギとなるカラムの事を指します。
idの1つ左の小さい四角の中で右クリック。
「主キーの設定」の上で左クリック。これでカラム「id」が主キーになります。
主キーはプライマーキーとも呼ばれます。
主キーに入る情報は「カラム内で重複がない」かつ「空欄ではない」という要件を満たす必要があります。
データ型
DBのカラムにはカラム毎に使用できるデータの種類を指定する事になります。
それがデータ型です。大きく分けて3つに分類されます。
- 文字列型
- 数値型
- 日付型
例えば日付型のカラムに文字列を大量に・・・というのはエラーになります。
各型の中でいくつかデータ型を紹介してみます。
文字列型
できるだけシンプルに説明します。
入力する文字数が決まっていたらCHARでnに文字数を指定しましょう。
入力する文字数が決まってなかったらVARCHARでnには最大文字数を予測して指定しましょう。
ただし氏名など全角文字列を入力する事を想定している際はnには文字数の倍の数を入力してください。
阿部太郎 ・・・ 全角1文字2バイトなので8バイト使用します。
→よってnには8を記入する必要があります。
加えて氏名は4文字ではない事も想定されます。加えて日本人じゃない可能性もあります。
マルクス・アウレリウス・アントニヌス さんだとドット含め18文字なのでnは36になります。
番号 | データ型 | 説明 |
---|---|---|
1 | CHAR(n) | nバイトのUnicodeではない固定長の文字列データ |
2 | VARCHAR(n) | nバイトのUnicodeではない可変長の文字列データ |
CHARもVARCHARも全角は2バイト、半角は1バイトでnを計算してください。
ピンポイントでnを設定する必要はありません。多少余裕をもってセットしていただく事をおすすめします。
参考
Unicode型で文字列を用意するデータ型もあります。こちらは全角、半角共に2バイトです。
CHARやVARCHARと比較してどっちが良いのかという議論になるのですが正直分かりません。
開発する人が扱いやすい様に統一されていればどちらでも良いです。
数値型
数値も整数や少数、金額など色々あるのですが整数だけ紹介しておきます。
番号 | データ型 | 説明 |
---|---|---|
1 | INT | -2,147,483,648~2,147,483,647の整数 |
2 | TINYINT | 0~255の整数 |
数値は一番沢山データ型があります。興味がる方は調べてみてください。
日付型
一つだけ紹介します。
番号 | データ型 | 説明 |
---|---|---|
1 | DATE | 0001-01-01~9999-12-31の範囲の日付 |
登録日とか修正日、更新日、削除日などで使えそうなデータ型です。
テーブルの中に情報を格納する
テーブルには色々な制約がありましたね。続いてテーブル内に情報を格納していきます。
「dbo.kojin」の上で右クリック。その後「上位200行の編集」の上で左クリック。
エクセルのようなセルの画面が出てきます。画像と同じ様にデータを入力してください。
nameにはVARCHAR(10)を指定していますが最大で3文字しか使っていません。半角なので3バイトです。
このようにある程度ゆとりを持ってテーブルを作成する様にしてください。
カラム「id」には数値。カラム「name」には文字を入力します。
入力した情報は自動更新されます。保存しなくても入力だけで情報を格納したことになります。
ここまで出来たら「テーブルの中に情報を格納する」は完了です。
nameの情報をabe、eno、igaにしている理由は特に無いです。
よくある名字を英語で書いただけです。3文字の名字で文字数が少なく書きやすかったという事です。
同様にidの番号も特に意味はありません。
まとめ
非常に簡単な仕様ですがテーブルを作成する事ができました。
次回記事でVBAを使ってExcelからRDBMSの情報を取り出します。
具体的に申し上げますと今回用意したテーブルからidをキーにしてnameをエクセルのセルに書き出します。
例えばidが1001の「abe」という文字列をセルA1に書き出すというような事をやっていきます。
SQL文とVBAのコードを書きます。やっとVBAのコードが書けます。
テーブルがシンプルですので非常に簡単なコードになる予定です。理解先行でコードを準備します。