DB知らない?でもわかるMySQL入門
この入門ページでは、MySQLについて初心者にもわかるように簡単に説明しています。
MySQLとは、データベースシステムのひとつです。データベースというのはある種のデータの集まりのことです。
フリーのデータベースシステムにはMySQLのほかに「PostgreSQL」や「SQLite」などが有名です。
ウェブサーバでデータを扱う場合、基本的にはファイルかデータベースかになるかと思います。この入門ページではMySQLを使ったデータベース管理を想定して解説しています。
データベースとは何か?
MySQLはデータベースを管理するシステムですが、とりあえず具体的にデータベースというものを見てみましょう。
101,田中,女性 102,斎藤,男性 103,田中,男性 104,佐藤,女性
これはとても簡単なデータベースです。1行のデータが4つ集まっているので、データベースといえます。
1つのデータを1行に記述し、データ内のさらに細かいデータをカンマで区切っているこのデータは、CSVとして広く使われているデータベースです。
CSVを閲覧するアプリにも、この小さなデータベースを操作する機能が付いているかもしれません。例えば単語の検索機能やソート機能、追記や削除機能などです。この程度のちょっとしたCSVデータを扱うだけなら、実はCSVビューアを使えば問題ありません。
しかし、データがもっと膨大で、もっと高度な操作がしたい場合には、MySQLなどのデータベースシステムが適しています。
4名だけのデータではなく10万人のデータだったり、ソートだけではなく同じ名前や性別によって細かくデータを抽出したい場合には、CSVビューアではおそらく力不足です。
しかし、データベースシステムとCSVビューアでは能力や規模は桁違いですが、本質的には同じと考えて問題ないと思います。
入門者としてデータベースを学ぶとき、イメージとして上で示した簡単なCSVを思い浮かべるとわかりやすいかもしれません。
データベース利用の流れ
MySQLはよく使う普通のアプリとは違い、まずMySQL内でユーザを登録します。そのユーザでログインしてからデータベースを使う段取りになっています。また、主にコマンドラインから利用するアプリでもあります。
MySQLはサーバという面が強いアプリだからかもしれません。
ここではインストールとユーザ登録については説明せず、ログイン後の簡単な流れについて解説します。
データベースシステムを使ってやることといえば、主にデータの挿入、データの削除と変更、データの抽出、そしてこれらのデータを入れるためのテーブルの作成や削除、結合などです。
テーブルというのはCSVでいうファイルに当たり、ひとまとめのデータベースの単位になります。MySQLでは、データベースとテーブルは次のような関係になっています。
このようにデータベースはいくつかのテーブルを含んでいるかたちになります。
テーブルはデータを挿入する前に定義しておく必要があります。何列なのか、その列は文字を入れるのか数値を入れるのか、などです。
例えば住所データを扱いたい場合には、まず名前列、郵便番号列、県列、市列、番地列、などといった列を定義したテーブルを作成することから始めます。
データベースにおいてテーブルの列をカラム(column)と呼ぶことがあります。行はロウ(row)ですが、こちらは「行」と呼ぶことが多いようです。
テーブルができたら仕様通りにデータを挿入します。
数値を定義した列に文字を入れたりするとエラーになります。
必要があれば複数のテーブルを作り、列ごとに関連性を持たせることもできます。
そしてテーブルからデータを参照したり検索したり抽出したり算出したりします。
これらの操作は、SQLと呼ばれるデータベース言語を用いて行います。基本的なSQLであれば、どのデータベースでもほとんど共通した記述方法になると思います。
MySQLとPHPの連携
MySQLはふつう、コマンドラインから操作するアプリですが、webサービスなどではウェブサーバ上のPHPスクリプトからMySQLにアクセスすることが多いと思います。
実はwebサービスによく使われるPHPなどには、データベースにアクセスする機能がもとから用意されています。
PHPの場合、それぞれのデータベース用の関数が個別に用意されています。
また、それぞれのデータベースの共通の操作を同じやり方を使って実装するPDOという技術も使えます。PDOを使うと将来的にデータベースを変更してもPHPコードの修正が最小限で済みます。
PHPからデータベースを使う場合、まず変数に接続データを格納し、それを通じてデータを読み込んだり書き込んだりしていくという流れになります。
PDOの使い方についてはPHPフィーチャリングDB!PDO入門をご覧ください。