実践 mSQL その 1

データベースを作ってみよう


 今度は、実際に mSQL を使って、データベースを作ってみましょう。 できれば、実際に同じ作業をしながら読んでください。



データベースを作る

 データベースを作るのは、 mSQL 管理者として登録されたアカウントでなければなりません。 mSQL 管理者が、以下のコマンドを打てば、 EMPLOYEE データベースが新規作成されます。

msqladmin create EMPLOYEE


msql ユーティリティ

 msql は DBMS と、SQL クエリーのやりとりをする対話型のインタフェースです。 SQL は手続き型言語に埋め込んで使うと以前説明しましたが、 この msql ユーティリティを使うことによって、 直接 SQL を発行することができます。 このユーティリティを使って、基本的なテーブルなどを作ったり、 データの確認などを行います。

msql データベース名

 で、起動します。起動するとプロンプトが出てくるので、 SQL を書いてから、\g と入力すると、クエリーを発行します。 \e と入力するとエディタが起動して、直前に入力したクエリーを編集できます。 \p で、直前に入力したクエリーを表示します。 \q で msql を終了します。



スキーマ設計

 SQL 入門編で作った社員データベースは、 所属部門が文字列で登録されているため、 データベース内に同じ文字列が重複してしまって、 ディスク効率的にも、検索効率的にも、また管理効率上も好ましくありません。

 そこで、このような場合は、部門をコードで管理するのが普通です。 社員テーブルには所属部門として、部門コードを記録し、 別に部門コードと部門名の対応表のテーブルを作るのです。 こうすることにより、部門一覧を取り出したり、 部門に関するデータを加えるのも容易になります。

 では、「社員テーブル」と「部門テーブル」 の2つのテーブルを設計してみます。 社員データベースはこんな感じになるでしょう。

EMPLOYEE
EmpTbl
nodivname
1013宮前 竜也
1021鈴木 陽二朗
1032畠山 めぐみ
1043菊地 直人
DivTbl
idval
1営業部
2企画部
3開発部

 これで、社員が増えても、部門が増えても、部門の名称が変わっても、 効率よく管理できることがわかるでしょうか。


 さて、次は各カラムのデータ型を決めなくてはなりません。 mSQL には、以下の4つの型が用意されています。

char固定長文字列
text可変長文字列
int数値
real実数

 今回は、int と char だけを使えば良いと思います。 実際に作るテーブルは、こんな形になります。

EmpTbl
noint
divint
namechar(20)
DivTbl
idint
valchar(20)

 char(20) は、半角文字 20 文字分を確保するという意味です。



テーブルを作る

 早速、設計したテーブルを EMPLOYEE データベースに作ってみましょう。 テーブルを作るには、CREATE 文を使います。基本構文は以下の通りです。

create table テーブル名 ( カラム名 型, カラム名 型, ... )

 msql EMPLOYEE を起動して、以下の SQL を発行してください。 これで EmpTbl テーブルができます。

create table EmpTbl (
no int,
div int,
name char(20)
)

 次は DivTbl を作ります。

create table DivTbl (
id int,
val char(20)
)


データを入れる

 mSQL には、 テキストファイルから一括でデータを入れるためのユーティリティも付属していますが、 今回はテストで、データ量も少ないので、直接 INSERT 文でデータを入れましょう。
まず社員テーブルから。

insert into EmpTbl (no, div, name) values (101, 3, '宮前 竜也')
 この要領で全社員を INSERT して下さい。 文字列は ' (シングルクォート)で囲ってください。また、 日本語コードは、SJIS または EUC を使用して下さい
次に部門テーブル。
insert into DivTbl (id, val) values (1, '営業部')

 入力が終わったら、正しくデータが入ったか、確認してみましょう。

select * from EmpTbl

select * from DivTbl


[ 目次 ]