PHPでデータベースを使う

データベースの基礎知識

 データベースとは、テキストを中心とした情報の集まりです。この情報をエクセルに代表される表計算ソフトのように、並べて、情報を追加したり、必要な情報を取り出したりするシステムです。基本的には、下記の機能しかありません。

これらの、作業を実現するためのコマンドの標準的なものがSQLを呼ばれるものです。データベースと、SQLさえ理解すれば、実際にデータベースを使うことが可能なのですが、データベースには、情報があるだけで、モニターへの表示方法や、データを集めた後の処理などの機能は非常に貧弱であり、実際には使いにくいというのが現状です。
 そこで、PHPなどの言語を使い、データベースを目的に合わせて使いやすくするプログラムを作るのです。
 データベースを話は、簡単に本一冊になるので、詳しくは話しません。ここでは、使い方のみを考えます。

ここでの説明は、実際に実行しなくとも良いです。中身が理解できるよう、ゆっくり読んでください。実際に作るのは、次回にまわします。

データベースの構造とSQL

データベースのシステムには、色々なデータを取り扱うため、まずは専用のスペース(ディレクトリのようなもの)を作ります。これをデータベースの作成と呼びます。(レンタルサーバーなどでは、ほとんどの場合、この領域と名前は最初から決まっています。)
 このデータベースを作る作業をSQLで示すと
【CREATE DATABASE `PHP_programinng`
となります。PHP_proguramimingとは、データベースの名前例です。任意のもので構いません。命令の意味は比較的わかりやすい英語なので、見れば想像が付くと思います。

 データベースは、データーの集まりです。エクセルの表にするとわかりやすいです。エクセルの表は、シートと呼ばれています。また、シートの集まりをブックと呼びますね。データベースの場合は、ブックのことであり、シートをテーブルと呼びます。
 例えば、簡単な名簿を作るとするとします。名簿には、名前、性別、血液型、出身地の4種類の情報があると仮定します。つまり
番号 名前 性別 血液型 出身地
1 Aさん A 北海道
2 Bさん B 東京
3 Cさん AB 大阪
4 Dさん O 沖縄
のような場合です。もちろん、全部でこれだけのデータであれば、そのまま配列に読み込めば良いのですが、人数や項目数が増えてくると厄介です。このようなときにデーターベースを使います。
【データベースの構造】
 データベースを使うときには、そのデータが数字なのか、文字なのか、どの程度の大きさなのかをあらかじめ指定します。上記の場合は、
番号 名前 性別 血液型 出身地
no name sex blood from
数字 文字列 文字列 文字列 文字列
と最初に指定します。2段目の英語は、シートの列の名前です(データベースではこの名前は半角英数字を使います。)、3段目は、データーの保管構造を定義します。エクセルで言うと、シートに当たりますが、データベースでは、これをテーブルと呼びます。
 さて、実際にテーブルを作成するには、SQL文を使います。この場合は
CREATE TABLE `meibo` (
`no` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 20 ) NOT NULL ,
`sex` VARCHAR( 4 ) NOT NULL ,
`blood` VARCHAR( 6 ) NOT NULL ,
`from` VARCHAR( 8 ) NOT NULL ,
PRIMARY KEY ( `no` )
) ;

長くなったので、折り返して表示しています。実際に使用する場合でも折り返して問題ありません。
さて、説明ですが、最初の行から説明すると、
・meiboと言うテーブルを作ります。その中身は
・noは数字(int)で、プラスの数値(UNSIGNED)で空欄はNULLではなく(NOT  NULL)自動的に数値が与えられます(AUTO_INCREMENT)
・nameは、20文字の文字列(VARCHAR(20))
・sex、blood、fromも同じ
・主な(重要な)キーワードは、noとします(PRIMARY KEY(’no’))
となります。このように、一つ一つ順番に指定しているだけなのですが、SQLコマンドは長くなる場合が多く、難しいというイメージを与えがちです。しかしながら、良く使うコマンドは、片手で数えるぐらいです。

次に、データーを追加する方法を考えます。ここでは例のAさんのデータを追加します。
INSERT INTO `meibo` ( `no` , `name` , `sex` , `blood` , `from` )
VALUES (
'', 'Aさん', '男', 'A型', '北海道'
);

これを日本語にすると
・meiboと言うテーブルにデータを追加(INSERT INTO)
・no、name、sex、blood、fromは、それぞれ、次の値です(VAVUE)
’’(空欄)、Aさん、男、A型、北海道
ここで、noの内容は空欄にしています。テーブルを作成したとき、この数値はオートインクリメントとしました。これは自動的に番号を順番に振ります。ちなみにデータが後から削除されても、番号はそのまま増え続けます。これは、絶対に重複しない数値を持つための手段です。

さて、これをAさんから、Dさんまで繰り返すと、例題のデータベースが完成します。もちろん、自由に人数を増やしていただいて結構です。

次に、Aさんの情報を検索してみましょう
SELECT *
FROM `meibo`
WHERE `name` = 'Aさん'

これを日本語にすると、
・meiboのテーブルから条件にある情報を選びなさい。
・条件は、nameにAさんと言う語が入っている情報を
となります。実行結果は、
no name sex blood from
1 Aさん A型 北海道
です。なお、SELECTの後の*は、全ての項目を表示と言うことです。例えば、nameだけ表示とか、nameとfromのみ表示などの指定も可能です。

これで、データベースの解説は終了です。SQL文も基本的なもののみ紹介しました。ここでは、データベースっていうデータの保管場所があって、SQL文と呼ばれるもので、作ったり編集したり検索したりすることがイメージできれば十分です。次回は、このデータベースを実際に作ってみたいと思います。


<PHPでメール送信-Top-<PHP&DBで掲示板>