古くから当たり前に使われてるデータベース。最近はビッグデータであったりで、今までのRDB以外にもAWSのRedshiftみたいな大容量向けのものが出てきたり、RDBに比べて機能は劣るものの高いパフォーマンスが出るNoSQL等々DBにまつわる環境も変わってきてます。
が、この記事では主にプログラムをしない人を対象にちょっとしたツールであったりでRDBを利用する為の入門にはどうすれば、という辺りに言及していこうと思っています。
なので、DBマスターを目指すような人だと少し違うと思う内容になっているかもしれません。
用語
DB(データベース)
データベースはデータを保存する何かを指すおおざっぱな単語です。
普段DBと言われるとRDBを指す事が多いと思います。
RDB(リレーショナルデータベース)
関係データベースとも呼ばれています。(リレーショナルを日本語にしただけですが)
これはリレーショナルモデルと言う集合や述語論理を使った数学的な考え方をデータベースに適用したものです。
ちなみに、時々テーブル間の関係(リレーションシップ・参照)を指してリレーショナルデータベースと言う人もいますがそうではありません。
RDBMS(リレーショナルデータベースマネージメントシステム)
名前のとおりRDBを管理するシステムの事です。
代表的なものMySQLやPostgreSQL、SQLServer、Oracle Databaseと言ったものがあります。
この記事ではこのうち環境構築がお手軽なMySQLを利用します。
カラム
列です。
表題、テーブルの縦方向です。
カラム1 | カラム2 |
---|---|
行1のカラム1のデータ | 行1のカラム2のデータ |
行2のカラム1のデータ | 行2のカラム2のデータ |
行
実際の各データです。
テーブルの横方向です。
環境を作る
今回はMySQLと呼ばれるRDBを使っていく方法を書いていきます。
XAMPP
XAMPPと呼ばれる割と有名なお手軽サーバー関連環境を構築するやつがあります。
(クロスプラットフォームでApache、MySQL、php、perlを一括でインストールするからこの名前だそうです。最近はそれ以外もいくらかついてきますが。)
この記事でも言及していますが、これをインストールするとMySQLというデータベースとphpMyAdminと呼ばれるMySQL内のデータをいじる管理ツールがセットでインストールされます。
ついでにphp、perl、tomcatといったサーバーアプリケーションを作る環境もインストールされます。
インストール方法は上の記事に書かれていますのでそちらを参照してください。
基本的にはインストーラをダウンロードして実行するだけで終わるので迷うことはないと思います。
MySQLのデータベース構成
RDB毎にデータベースの持ち方が少し違いますが、以下はMySQLでの話です。
MySQLではまずシステム(=MySQL自体)が大元となって複数のデータベースを持ちます。
各データベースはテーブルを複数持ち、このテーブルに複数のデータを行として保存していきます。
まずDBに慣れるためにもDBを表組としてとらえると、取っ付きやすいと思います。
表組ツール代表のエクセルで例えると
- MySQL = Excel.exe
- データベース = .xlsxファイル
- テーブル = シート
といった形です。
各シートに列と行を持った表組を作ります。
表組の枠組みを決める必要あり
MySQLではエクセルと違って事前に表組にどのような列が存在するのかをしっかり決めておく必要があります。後で変更は出来ますがエクセルより手間がかかります。
phpMyAdminでデータベースを作ってみる
まずはxamppを起動して、ApacheとMySQLをStartします。
Actionsの下のStartを押下するとModuleの所が緑になり、文言がStopに変わります。
変わらない場合はSkypeと言った別のツールと衝突しているか、インストールに失敗しているか辺りです。
Adminを押すとphpMyAdminがブラウザで開きます。
ひとまず操作法を以下に列挙していきます。次回は実際に何かテーマを決めてしていきたいと思います。
データベースを作る
まずはテーブルを格納するデータベースを作成します。
phpMyAdminの左側にNewというリンクがあると思いますのでそれを押します。
右側にデータベースを作成すると出ますので適当なデータベース名を入力します。
照合順序は「utf8_general_ci」(似たような名前が沢山ありますが、間違えないように…)を選択し、作成でデータベースを作るのは完了です。
テーブルを作る
データベースが出来ると左側の一覧に追加されます。
クリックするとまだテーブルが無いので、テーブルを作成する画面しか出ません。
ここでも適当な名前を設定して、テーブルを作ります。
カラム数の項目は名前の通りのその表組が何個カラム(=1行が持てるデータ数)があるかという指定です。とりあえず操作を知る為だけなのでなんでもいいです。
このような画面になります。このフォームは指定したカラム数の数だけずらーと縦に並びます。カラム数が足りなかった場合は上に追加ボタンがあります。
ここで、大事なのは「名前」、「データ型」、「インデックス」です。
次に重要なのが「デフォルト値」と「コメント」です。
名前
そのままカラムの名前です。
分かりやすい名前を付けます。
データ型
MySQLでは各カラムに設定できるデータの種類を事前に決める必要があります。
エクセルではセルの中身で勝手に判断してくれますが、MySQLではそのようなことがありません。
代表的な型は以下のものです。入れる予定のデータを元に適切なものを選びます。
- INT
- 整数値です。小数点は対応していません。
- DECIMAL
- 実数(スカラー)です。こちらは小数点対応です。無理数等で計算誤差が発生する可能性があります。
- TEXT
- 0文字以上の文字列(文章)です。デフォルト値が設定できません。
- VARCHAR
- こちらも0文字以上の文字列(文章)です。TEXTとの違いはこちらは事前に「長さ」に最大の文字数を設定する必要があります。デフォルト値が設定できます。
- DATETIME
- 日時です。似たものにTIMESTAMPがありますが、こちらは使わないようにします。
- SERIAL
- 自動採番される整数です。行を管理する際に適当な連番を振って管理したいことがあるかもしれません。これはその際に使えます。このカラムは行を追加する度に前の行より1大きい値を自動で設定してくれます。
インデックス
PRIMARY、UNIQUE、INDEX、FULLTEXTが選択肢に出ますが、重要なのはUNIQUEです。
UNIQUEを選択するとそのテーブル内で同じデータを別の行に設定することが出来なくなります。
※小さなダイアログ出ますが、特に何も設定せずにOKで大丈夫です。
例えば名前カラムを用意して、その名前カラムが重複した行が設定されたくない。と言う場合にエラーという形で防ぐことが出来ます。
デフォルト値
行を追加する際に、値を設定しなかった際に自動で補われる値です。ユーザー定義を選択し、下に現れるフォームに好きな数値や、文章を入力できます。
文章は”で囲む必要がありますので注意してください。
特殊なものにCURRENT_TIMESTAMPというものがあります。これはDATETIMEを選択したカラムに使え、行を追加したときにその時の日時が設定されるというものです。
コメント
カラムやテーブルの説明です。
実際のデータには影響はありませんが、分かりやすい説明を書いていると後から見たときに理解しやすいです。
実際入力するとこのような感じです。
行を足す
データベースが出来て、テーブルが出来たら次に実際に保存するデータである行を足します。
左側に先ほど作ったテーブル名が並んでますので選択します。
上にタブが並んでいるのでザックリ解説します。
- 表示
- テーブル内の行を表示します。
- 構造
- カラムの設定を表示、変更します。
- SQL
- データベースを操作するプラグラムのようなものを実行します。
- 検索
- データを指定して行を検索します。
- 挿入
- 行を増やします。
- エクスポート
- テーブルのカラムの情報と行をファイルに保存します。
- インポート
- エクスポートしたファイルから、テーブルであったり行であったりを復元します。
今回は行を足すので「挿入」を選択します。
見たままですが、設定したいデータを入力して実行で行が増えます。
2つ表示されていると思いますが、一度に2行増やすことが出来ます。(2行増やす場合は一番下の実行を押してください。)
左下に何行ずつ増やすというプルダウンがありますので、それで一度に10行増やすとかも可能です。
ちなみにtest_column1はSERIALを設定したので空白で大丈夫です。
適当に値を入れて2行足してみました。
test_column1は空白でしたが、カラムの型がSERIALだったので1からの連番が自動で設定されいます。
test_column2はCURRENT_TIMESTAMPを指定したので実行した時の日時が設定されています。
行を削除する
表示のところ見れば一目瞭然ですが、「削除」を選択すれば消えます。
複数まとめて消す場合は左のチェックボックスにチェックを入れて、下にある「チェックしたものを: 削除」を選べば一括で消えます。
注意点として、SERIALやUNIQUEが設定されていないと行が特定できず削除が出来ないので気を付けてください。(チェックボックスや削除ボタンが表示されない)
行を編集する
行を表示している状態で、編集したいデータをダブルクリックすると変更できます。
変更したい値を入力してエンターを押すとその場で変わります。
こちらも削除する際と同様にSERIALやUNIQUEが設定されていないと変更できません。
これでデータベース作る、テーブル作る、テーブルに行足す、行消す、変更するという最低限の操作は出来ました。
データベースとテーブルの粒度
基本的に1アプリに1データベース。
1要素に1テーブルです。1つのテーブルにいろいろ詰め込むと管理できないのでほどほどにしておきます。普通の表組と同様です。
次の記事では実際にテーマを決めてテーブル作ってデータを管理してみます。