MySQL入門者必見!MySQLとデータベースの基礎を徹底解説!

MySQL入門者必見!MySQLとデータベースの基礎を徹底解説!

プログラミングを学習するにあたって、MySQLやデータベースは非常に重要な概念です。しかし、プログラミング入門者の方は、つい後回しにしてしまいがちな分野ですよね。MySQLについて学習することで、Webサービス開発の全体像が見えてきますので、プログラミング学習者だけでなく、ビジネス側の方々にとっても知っていて損はないと思いますよ。

今回は、入門としてMySQLの基礎を解説致します。

目次
  1. MySQL入門講座
  2. データベースとは?
  3. データベースの使用例
  4. データベースの利点
  5. データベースの種類
  6. リレーショナルデータベース
  7. RDBMS
  8. プログラミング(PHP+HTML)によるDB操作
  9. まとめ

MySQL入門講座

データベースとは?

MySQLとは、データベースの一種です。では、データベースとは何のことでしょうか?

一言でいうと、テーマに沿ったデータの入った箱 かつ 簡単にデータを取り出し可能にしたソフトウェアをデータベースと呼びます。

広い意味でのデータベースと狭い意味でのデータベースがあり、広い意味では電話番号帳もデータベースと言えます。

データベースの使用例

Webサービスを行う上でデータベースはなくてはならないもので、様々なサービスで、情報の保存と取り出しにデータベースが利用されています。

Twitterのようなコミュニケーションツールの場合

  • ユーザ認証(ID、パスワード)
  • プロフィール(アカウント名、本名、生年月日)
  • ツイート(本文、日時)
  • フォロー/フォロワー(相手のアカウント名)
  • リスト(リスト名、相手のアカウント名)

AmazonのようなECサイトの場合

  • ユーザ認証(ID、パスワード)
  • プロフィール(アカウント名、本名、住所、etc.)
  • 購入履歴(商品名、値段、数量、日時)
  • 欲しいものリスト(商品名、追加日、優先度)

上記は一部例であり、実際にはより多くの情報がデータベースに保存されています。

image

データベースの利点

データの保存方法には、様々な方法があります。

  • 人間(脳みそ)
  • PC内のファイル
  • データベース
  • etc.
普段何かデータの保存をする場合、些細なことなら自身の記憶だけに頼ったり、他人との共有やできるだけ忘れたくないことはPC内のファイルに残すと、用途によって使い分けをしていると思います。

ではどういう用途でデータベースが使われているかを説明するため、これら保存方法の特徴を「正確さ」「速度」「容量」「複数人の書き込み」「コスト」の5つ観点からまとめると、次のようになります。 [table id=11 /]

人の記憶はかなり曖昧で正確さにかけ、また自分以外が利用することはできません。紙は書くのに時間がかかり、たくさん書くのも大変です。ファイルは通常、複数人の同時書き込みに向いておらず、容量にも限界があります。

データベースはこれらと比べて、「大容量・高速・整合性」という特徴がデータベースにはあります

image

Webサービスでは何百万や何千万といったデータを扱うことも珍しくなく、このような膨大なデータをPC内のファイルで扱うと、速度や整合性に問題が発生してきます。

最も分かりやすい例はExcelを利用したデータ管理との比較で、Excelの場合、複数人でファイルを編集した際にデータの整合性が破綻したり、行数が膨大になると動作スピードが低下したりと色々な問題が発生しますが、データベースではこれらの問題が大幅に改善されます。

使用例で紹介したユーザのIDやパスワードといった情報を保存する場合、「大容量・高速・整合性」という3つの利点から、データベースの利用は必須です。

データベースの種類

一口でデータベースと言っても、その種類には様々なものがあり、データを扱う手法としては以下のようなものがあります。

  • 階層型
  • ネットワーク型
  • リレーショナル型
この中で最も一般的に使用されているのは、リレーショナル型であり、MySQLもリレーショナル型に沿ったデータベース(リレーショナルデータベース)の一つとなります。

リレーショナルデータベース

リレーショナルデータベースには主に2つの特徴があります。

  1. データは2次元(行×列)の表形式で表現
  2. 複数の表を結合(リレーション)して利用可能
データを2次元の表に分割し、また表を様々な手法で結合して使うことで、複雑なデータを柔軟に扱うことができます。

文章だけだとなかなか理解しづらいと思いますので、この2つの特徴について、図を交えながら説明していきます。

1.データは2次元(行×列)の表形式で表現

リレーショナルデータベースでは、データを表形式で表現します。例えば商品のデータを「商品ID」「商品名」「価格」・・・のように項目を分け、これを商品の数だけ集めると、次のようになります。

image

1件のデータを「レコード(行)」、項目を「カラム(列)」、そしてレコードの集まりを「テーブル(表)」と呼びます。

商品が増えた場合はレコードを追加し、項目が増えた場合はカラムを追加することで、商品の情報を一つのテーブル(表)で表現します。

2.複数の表を結合(リレーション)して利用可能

もう1つの大きな特徴は、複数の表を結合(リレーション)して利用できることです。

image

このように表を結合することで、1つのテーブルとして扱うことができます。

RDBMS

リレーショナル型のデータベースを管理するシステムのことを、RDBMS(Relational DataBase Management System)といいます。

世界中ではたくさんのRDBMSが利用されており、主なものは以下となります。 [table id=12 /]

プログラミング(PHP+HTML)によるDB操作

ここまでで、MySQLとデータベースの基礎については、なんとなく理解していただけたかと思います。 それでは実際にデータベースがどのように使用されているか、プログラミングをしてみましょう。 まずgoods_tableというテーブルがすでに作成されているとします。

image そして、mysql_sample.phpというファイルを作成し、ブラウザで表示させてみます。

ファイル名:mysql_sample.php

<?php $goods_data = array(); $order = 'ASC'; if (isset($_GET['order']) === TRUE) { $order = $_GET['order']; } $host = 'localhost'; // データベースのホスト名又はIPアドレス $username = 'username'; // MySQLのユーザ名 $passwd = 'passwd'; // MySQLのパスワード $dbname = 'dbname'; // データベース名 $link = mysqli_connect($host, $username, $passwd, $dbname); // 接続成功した場合 if ($link) { // 文字化け防止 mysqli_set_charset($link, 'utf8'); $query = 'SELECT goods_name, price FROM goods_table ORDER BY price ' . $order; // クエリを実行します $result = mysqli_query($link, $query); // 1行ずつ結果を配列で取得します while ($row = mysqli_fetch_array($result)) { $goods_data[] = $row; } // 結果セットを開放します mysqli_free_result($result); // 接続を閉じます mysqli_close($link); // 接続失敗した場合 } else { print 'DB接続失敗'; } ?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>サンプル</title>

<style type="text/css">
        table, td, th {
            border: solid black 1px;
        }
        table {
            width: 200px;
        }
    </style>

</head>
<body>

<h1>商品一覧</h1>


<form>
        <input type="radio" name="order" value="ASC" <?php if ($order === 'ASC') {print 'checked';} ?>>昇順
        <input type="radio" name="order" value="DESC" <?php if ($order === 'DESC') {print 'checked';} ?>>降順
        <input type="submit" value="表示">
    </form>


<table>

<tr>

<th>商品名</th>


<th>値段</th>

        </tr>

<?php foreach ($goods_data as $value) { ?>

<tr>

<td><?php print htmlspecialchars($value['goods_name'], ENT_QUOTES, 'UTF-8'); ?></td>


<td><?php print htmlspecialchars($value['price'], ENT_QUOTES, 'UTF-8'); ?></td>

        </tr>

<?php } ?>
    </table>


</body>
</html>
</pre>

MySQLのインストール

そうすると以下のように表示されます。

image

上記のページでは、商品一覧を表示させることができ、かつ表示順を昇順・降順と選ぶことができます。 ECサイトなどでは必ずある機能で、商品情報を格納しているテーブルからデータを表示しています。 このようにプログラミングによってデータベースを操作することにより、Webサイト上にデータベースの内容を出力したりすることができ、同様にデータベースの編集なども行うことができます。

まとめ

ここまでMySQLとデータベースの入門について説明してきましたが、いかがでしたでしょうか?MySQLを学習することで、Webサービス開発において、できること・理解できることが格段に増えますので、プログラマーに関わらずWebに関わる方々には是非学んでおきましょう。

Tech 2 GO編集部
ライター
Tech 2 GO編集部

関連記事