データベースの作成は簡単な部分ですが、SHOW
TABLES
が示すとおり、この時点では空です。
mysql> SHOW TABLES;
Empty set (0.00 sec)
難しい部分は、データベースの構造、つまり、どのようなテーブルが必要で各テーブルにどのようなカラムを含めるかを決定することです。
各ペットの記録を格納するテーブルが必要です。このテーブルには、pet
という名前を付けることができ、少なくとも各ペットの名前を含める必要があります。名前だけはあまり意味がないので、このテーブルにはほかの情報も必要です。たとえば、家族の複数のメンバーがペットを飼っている場合は、各ペットの所有者を記録することができます。種や性別などの基本的な説明も記録できます。
年齢はどうでしょうか。重要な情報ではありますが、データベースに格納するには適しません。年齢は時間の経過によって変化するため、記録を頻繁に更新する必要が生じます。代わりに、誕生日などの固定値を格納する方が適切です。そうしておけば、年齢が必要になったときに、現在の日付と誕生日の差として計算することができます。MySQL には日付演算を行う関数が用意されているため、これは難しくありません。年齢の代わりに誕生日を格納することには、ほかの利点もあります。
たとえば、ペットの誕生日が近づいたらリマインダを生成するといったタスクにデータベースを使用できます。(このようなクエリーはくだらないと思うなら、いわゆるコンピュータ支援による人間的接触のために、会社のデータベースでも同じ質問を使用して、今週または今月に誕生祝いのメッセージを送信する必要のあるクライアントを特定していることを思い出してください。)
現在の日付ではなく、別の日付を基にして年齢を計算することもできます。たとえば、データベースに死亡日を格納すると、ペットが何歳で死んだかを簡単に計算できます。
pet
テーブルに含めると役立ちそうな情報はほかにもあるでしょうが、ここまでに挙げた名前
(name)、所有者 (owner)、種 (species)、性別
(sex)、誕生日 (birth)、および死亡日 (death)
で十分です。
CREATE TABLE
ステートメントを使用して、テーブルのレイアウトを指定します。
mysql>CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
->species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
name
、owner
、および
species
の各カラムではカラム値の長さが変化するため、これらのカラムに
VARCHAR
を選択することは適切です。これらのカラム定義の長さは、すべて同じである必要はなく、20
である必要もありません。通常は、1
から 65535
までの範囲で、もっとも適切と思われる任意の長さを選択できます。選択が適切でなく、あとでより長いフィールドが必要になった場合は、MySQL
の ALTER TABLE
ステートメントを利用できます。
ペットのレコードで性別を表す値としては、'm'
と 'f'
、または
'male'
と
'female'
など、いくつかの種類を選択できます。1
文字の 'm'
と
'f'
がもっとも簡単です。
birth
カラムと
death
カラムに
DATE
データ型を使用することは明白です。
テーブルを作成したあとは、SHOW
TABLES
で何か出力されるはずです。
mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet |
+---------------------+
想定どおりにテーブルが作成されたことを確認するには、DESCRIBE
ステートメントを使用します。
mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
DESCRIBE
ステートメントは、テーブル内のカラムの名前や型を忘れた場合などに、いつでも使用できます。
MySQL のデータ型に関する詳細は、章 6. データ型を参照してください。