PHP入門 | PDOを使ったデータベースアクセス | MySQLにテーブルを作る
それでは、MySQLにサンプルとしてデータベースを用意する。MySQLでデータベースは次のような構造になっている。
データベース
最初に用意しなければならないのがデータベースである。MySQLを使うときは、まず利用するデータを整理して保管するデータベースを用意する。
テーブル
データベースに作成する実際のデータを整理する。テーブルには、どの項目にどの値を保存するかといったデータの構造が定義されており、それに従ってデータが保存される。
フィールド、カラム
いろいろな呼び方があるが、テーブルに含まれるそれぞれの項目である。テーブルは各フィールドを個別に保存するわけではない。テーブルに定義されたすべての項目の値を1つの場所にまとめて保管する。
レコード
テーブルに実際に保存されるデータである。1つのレコードには、各フィールドの値が1つずつ保存されている。
データベース作成作業は本来ならMySQLコマンドを実行して行うが、XAMPPの場合はphpMyAdminというMySQL専用の管理ツールが含まれているため、これを利用すると便利である。
http://localhost/phpmyadmin/
ブラウザーでこのアドレスにアクセスしてみよう。管理ツールの画面が表示される。ここでデータベースとテーブルを作成していく。
1. データベースの作成
まずデータベースを作る。ページ上部に並んでいるタブから「データベース」というタブをクリックする。そして表示された「新しいデータベースを作成する」という表示の下に、データベース名と使用するテキストエンコーディング名を設定する。ここでは次のように入力し、「作成」ボタンを押すとデータベースが作成される。
- データベース名: mysampledata
- エンコーディング: utf8_unicode_ci
2. テーブルを作る
データベースを作成すると、左側の一覧にmysampledataというデータベース名が追加される。この項目をクリックして選択すると画面が変わる。「データベース mysampledata に新しい table を作成する」という表示が現れる。ここに名前とカラム数を次のように設定する。
- 名前: sampletable
- カラム数: 5
テーブルの内容を設定する
テーブル名とカラム数を入力して「実行」ボタンを押すと、テーブルの内容を設定する表示が現れる。ここで、テーブルに用意する各カラム、つまり値を保存する項目の詳細を設定する。ここでは次のように作ってみよう。特に記載していない設定は、標準のままにしておく。
| カラム | 型 | インデックス | 長さ | Auto incremental | NULL |
|---|---|---|---|---|---|
| id | INT | PRIMARY | ON | ||
| name | VARCHAR | 20 | |||
| VARCHAR | 50 | ||||
| tel | VARCHAR | 20 | |||
| memo | VARCHAR | 255 | ON |
このように作成すると、sampletableというテーブルがデータベースに追加される。このsampletableは利用できる状態になる。
これに対応するCREATE文は次のとおりである。
CREATE TABLE sampletable
(
id int NOT NULL AUTO_INCREMENT,
name varchar(20) NOT NULL,
mail varchar(50) NOT NULL,
tel varchar(20) NOT NULL,
memo varchar(255),
PRIMARY KEY (id)
);
3. サンプルレコードの追加
サンプルとしていくつかのデータ、つまりレコードを追加しておく。上に表示されているタブから「挿入」を選択する。下に各カラムの値を入力するフォームが表示されるので、適当な値を書いて「実行」ボタンで実行する。これで入力した内容が新しいレコードとして登録される。同じように、いくつかレコードを追加してみよう。
ここでレコードを追加するとき、最初のidに値を書く必要はない。これは自動増加機能によって自動的に値が追加されるように設定されている。また、memoは書かなくてもエラーにはならない。
これに対応するINSERT文は次のとおりである。
INSERT INTO sampletable(name, mail, tel) VALUES ("성진", "sung@abc.com", "02-123-1234");
INSERT INTO sampletable(name, mail, tel, memo) VALUES ("원석", "won@foo.info", "02-111-1111", "メモ");