見習いシステムエンジニア(文系)

見習いシステムエンジニア(文系)

パソコン音痴の文系の私が、システムエンジニアとして大成(したらいなあと日々奮闘)するブログです。

Amebaでブログを始めよう!
こんばんは、ディひターです。


DB構築の続きを、ちょっとやってみようかな、と。





設計って実務ではやったことないんですけど、うまいことやるのは難しそうですね。
どういうシステムを作るのか、どういう機能があればいいのか、を設計の段階で詳しく詰めないといけませんからね。


DB構築に限った話ではないんですが、詳細までしっかり決まって設計書を作り、その設計書が一度も変更にならない。
そういうことってあるんですかね?
私が携わったシステムは、コーディング中、さらにはテスト中の仕様変更なんてのもザラでした。


前回、データベース名を"akb48g"と作りましたので、それにちなんだDBを構成しようかと。
このデータベース名のことを、インスタンスなんて呼んだりもするそうです。


メンバーの情報を呼び出せるようなDBを構築してみようかと。


というわけで、必要なテーブル項目をば。

メンバーID
氏名
誕生日
身長
血液型
加入日

昇格日
所属チーム1
所属チーム2
卒業・脱退日
所属事務所


こんなところでしょうかね。
ぱっと見て、わからないところはありますでしょうか。


メンバーIDとは、管理を楽にするためにつけるID番号です。
所属チームが2つあるのは、兼任組を考慮した結果です。


テーブルを作るのは、CREATE文ですね。
一つのデータベースに、複数のテーブルを作ることができます。

CREATE TABLE Member
(member_id INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
birthday DATE ,
heigh DECIMAL ,
blood_type VARCHAR(2) ,
kanyu_bi DATE NOT NULL,
ki DECIMAL NOT NULL,
shokaku_bi DATE ,
team1 INTEGER NOT NULL,
team2 INTEGER ,
sotsugyo_bi DATE ,
jimusho VARCHAR(50) ,
PRIMARY KEY (member_id));


はい、このようなCREATE TABLE文ができます。
大文字小文字は、どうでもいいんですけどね。

CREATE TABLE Member
の箇所で、テーブル名を宣言しています。
「これから"Member"という名前のテーブルを作ります」という意味です。


その下にカッコで括って、テーブルの設定を定義していきます。


一番左に書いてあるものが、列です。カラム、とも言います。
Excelで例えれば、アルファベットで表示されているものです。
これには任意の名前を付けることができます。
一部、付けられない名称もありますけれども。
アルファベットの世界なので、一般的には英語で命名しますが、
英語がわからなかったらローマ字でさくっとつけてしまいましょう。


次にある、INTEGERとか、DATEとかいうのは、データ型です。

たとえばINTEGER型を指定しているカラムには、整数のデータしか入れることができません。
DATE型には、日付(年月日)を入れる。
といった具合です。(業務で使っているOracleは、確か時分秒まで入った気がする)

上の例で使っているのは、あとVARCHARとDECIMALですね。

VARCHARは、「ヴァーキャラ」と読みまして、可変長文字列を入れることができます。
……ついつい「ヴァーチャル」って言っちゃいがちですが。
VARCHAR(20)といったように、かっこで数字を指定してやります。
この数字は最大文字列を表していまして、この場合だとこのカラムには20文字まで入れることができる、といった意味になります。
Oracleだと、VARCHAR型でなく、VARCHAR2型というのを使いますけどね。

最後にDECIMAL。
これは小数を入れるデータ型です。INTEGERには整数しか入れられませんので。

他にもデータ型はいろいろありますが。
ひとまずはこの辺で。


右に"NOT NULL"とか書いてあったり書いてなかったりするのは、これは「データがない状態を許容するかどうか」です。
nullはヌルと読みます(人によってはナルと読むらしい)。データがない状態のこと。
プログラムではどんな言語でもよく聞く言葉で、「ぬるぽ」の語源にも一役買っているそうですよ。
それは私はあまり詳しくないんですけれども。
NOT NULLと書いてある列には、データを登録する際に、そのカラムをデータなしにできない、ということです。
名前なんかは必ずほしいですからね。NOT NULLという制約をかけています。
誕生日なんかは、ひょっとしたら分からない場合もあるかもしれないので、データが入れられない可能性があるところには、制約を掛けません。


一つのカラムを指定したら、カンマで区切ってください。


そして最後の行。
PRIMARY KEY (member_id)
と書いています。

これはプライマリキー(もしくは主キー)といいまして、一意性を保つためにカラムを指定しています。
私はこう教わったんですけど、DBについて何も知らない人間が、この説明で理解できるのか、って話ですよ。

簡単に言ってしまえば、プライマリキーに指定したカラムは、データが重複してはいけない、ということです。
テーブルを作ったら、行(レコード)を登録(挿入)していくのですが、同じメンバーIDを持っている行は、入れられないようにする、ということです。
入れようとしたらエラーになります。


では、作ってみます。

akb48g=#
というところに、一気に入力していきます。








セミコロンが命令の終わりを意味していますので、それまでは改行しても構いません。


最後まで入力して改行すると、このような表示が出ます。







CREATE TABLEと表示されたら、テーブルの作成に成功した、という意味です。
うまくいかなかったら、必ずERRORと出るはずですので。



ちなみにデータを呼び出すには、SELECT文を使います。

SELECT * FROM Member;








SELECT文の書き方は、またいずれ。

(0行)と表示されました。
これはまだデータが登録されていないからですね。
けれどこれで、テーブルが作られている、ということは確認できました。


では次回は、データを挿入してみましょう。
時間のある時に。






……別に勉強のためにこのブログ見てる、って人はいなさそうですけどね。