データベースの基本知識

Webアプリケーションを構築する上で、データベースの利用は欠かせないものです。
今回はMySQLデータベースの基本についてご説明します。

Webアプリケーションにおけるデータベースとは

まずはWebアプリケーションにおけるデータベースの位置づけや役割について触れます。

データベースの役割

データベースとは、PHPなどのプログラムで発生したデータを保存する場所になります。
データベースがあることで、様々な情報(履歴情報、ブログ記事、会員情報、などなど)は永続化され、データとして利用することができるようになります。
また、データベース機能を提供する一連のシステムを、データベースエンジンとも呼びます。

RDB(関係データベース)とは

データベースにも種類があります。
通常は、Webアプリケーションにおけるデータベースとは、RDB(Relational Database)のことだと思って置いて大丈夫です。
また、RDBを管理するシステムを指して、RDBMS(Relational Database Management System)と呼びます。
RDBでは、エクセルの表のように、列と行で情報のまとまりを管理し、その情報同士を連携させることで大規模なデータ構造を管理しています。
表はテーブル、列はフィールド、行はレコードと表現されます。

参考:ウィキペディア 関係データベース

MySQLの位置づけ

RDBMSには様々な種類があり、商用のものでは、『SQL Server』『Oracle』などがあります。オープンソースでは、『MySQL』『PostgreSQL』というものがあります。
『MySQL』『PostgreSQL』のどちらもメジャーで、実務での実績が豊富です。
また、今回はレンタルサーバなどにインストールされていることが多い、MySQLを教材にしています。

SQLとは

データベースが倉庫だとしたら、SQLはデータを出し入れする運搬者です。
リレーショナルデータベースの扱いに対応した、専用の言語があるからこそ、アプリケーションから効率的にデータを扱うことができるのです。

プログラミング言語からのSQL利用

プログラミング言語には、データベースエンジンへのアクセス用関数が用意されており、SQLを介してデータのやりとりを行います。

データ操作言語(Data Manipulation Language, DML)

SQLの種類には2種類があり、ひとつはデータ操作言語(DML)。もうひとつがデータ定義言語(DDL)です。
まずは、アプリケーション上で主に使うことになるデータ操作言語から説明します。
通常は、SELECT、INSERT、UPDATE、DELETEの4種類からなり、データベースエンジンによってさらに別のものが加わります。

ここでは、以下のようなデータを例にとって、各構文の説明をします。
『くだもの』テーブルとして、『ID,名前,色,味』のフィールドがあり、4つのレコードが登録されている状態です。

[くだもの]テーブル

ID 名前
1 りんご 甘酸っぱい
2 レモン 酸っぱい
3 メロン 甘い

SELECT

データを検索する際に利用します。

SELECT ID, 名前, 色, 味 FROM くだもの WHERE 1

上記では、すべての行が結果として出力されます。

SELECT * FROM くだもの WHERE 1

と書くこともできます。

SELECT ID, 名前, 色, 味 FROM くだもの WHERE ID = '2';

上記では、ID=2のレモンの行が結果として出力されます。

INSERT

データを挿入する際に使われます。

INSERT 
  INTO くだもの
  (ID, 名前, 色, 味) 
  VALUES 
  ('4', 'スイカ', '緑', '甘い');

上記では、スイカの行が追加されます。

UPDATE

データを更新する際に使われます。

UPDATE
  くだもの
SET
  色 = '青',
WHERE
  ID = "1";

上記では、りんごの行の色が、「青」に更新されます。

DELETE

データを削除する際に使われます。

DELETE FROM くだもの WHERE ID = "1";

上記では、りんごの行が削除されます。

データ定義言語(Data Definition Language, DDL)

データ定義言語では、データの器(テーブルとフィールド)自体を定義します。
データベースエンジンは、データ定義構文の書かれたSQLを受け取ることで、テーブルを作成、更新します。

CREATE

テーブルを作成する際、ストアドファンクションを作成する際などに使われます。

CREATE TABLE くだもの (
  ID int(10),
  名前 varchar(20),
  色 varchar(20),
  味 varchar(20)
);

上記では、くだものテーブルを作成します。

DROP

テーブルを削除する際、ストアドファンクションを削除する際などに使われます。

DROP TABLE くだもの;

上記では、くだものテーブルを削除します。

ALTER

テーブルの定義を変更する際などに使われます。

ALTER TABLE `くだもの` CHANGE `色` `色` VARCHAR(30);

上記では、くだものテーブルの色フィールドの型(文字列)を、最大文字数20文字から30文字に変更しています。

TRUNCATE

テーブルを空にする際などに使われます。

TRUNCATE TABLE くだもの;

上記では、くだものテーブルを空にします。

フィールドの型について

テーブルを構成するフィールドには、プログラミング言語のように、様々な型が存在します。ここでは、主要な型について紹介したいと思います。
以下を使いこなせば、最低限実運用に耐えるシステムを構築できます。(最悪、intとtextだけでもなんとかなります)

int

4バイトの整数型です。
-21億~+21億まで扱えるため、数値型が必要な場合はintを利用すれば、大抵はまかなえます。

bigint

8バイトの整数型です。
4バイトのintでは足りない、甚大なデータに利用します。

float

4バイトの浮動少数型です。
有効桁数は7桁となります。

varchar

文字数を指定するタイプの文字列型です。

text

文字数を指定しないタイプの文字列型です。
varcharよりも長い文字数が必要な文字列フィールドで利用します。

datetime

日時型です。
年月日時分秒(2000-12-31 23:59:59)を管理できます。

timestamp

日時型です。
年月日時分秒(2000-12-31 23:59:59)を管理できます。
datetimeとtimestampは非常によく似ており、通常はどちらでもほとんど同じです。
datetimeの方は、例えば「2000-12-31 23:59:59」だとすると、この情報をそのまま文字列として内部保存しています。
一方、timestampは、内部的にはunixtimeという形式で保存しています。

UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種。UNIXエポック、すなわち協定世界時 (UTC) での1970年1月1日真夜中(午前0時0分0秒)の時刻からの形式的な経過秒数(すなわち、実質的な経過秒数から、その間に挿入された閏秒を引き、削除された閏秒を加えたもの)として表される。
UNIX時間 – Wikipedia

時差などの処理を含めて考えると、timestamp型の方がおすすめです。

date

日付型です。
年月日(2000-12-31)を管理できます。

time

時間型です。
時分秒(23:59:59)を管理できます。

このページをシェア Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn