データベースの作成は簡単です。ただし、以下の
SHOW TABLES
の結果でわかるように、現在は空のままです。
mysql> SHOW TABLES;
Empty set (0.00 sec)
難しいのは、データベースの構造、すなわち必要なテーブルとそれぞれのカラムを決めることです。
まず、ペットごとのレコードを持つテーブルを作成します。このテーブルには
pet
という名前を付けて、少なくとも動物の名前だけは格納する必要があります。名前だけではテーブルを作成する意味があまりないので、ほかの情報も格納する必要があります。たとえば、家族の中の複数の人物がペットを飼っている場合、ペットごとの飼い主を知りたい場合があります。また、種類や性別などの基本情報を記録することもできます。
年齢についてはどうでしょうか。年齢も重要な情報ですが、それをデータベースに格納するのは適切ではありません。年齢は時間の経過とともに変化するので、記録を頻繁に更新する必要があるためです。代わりに、誕生日などの固定値を格納するほうが適切です。そうすれば、必要なときに現在の日付と誕生日との差分を計算して年齢を知ることができます。MySQL には日付計算を行うための関数が用意されているので、これは難しいことではありません。年齢の代わりに誕生日を格納することには、ほかの長所もあります。
データベースを使用して、ペットの今度の誕生日を知らせる、などの作業を実行できる(注意: ペットの誕生日を知らせるクエリなどばかばかしいと考えるかもしれないが、人間的な行動をするためにコンピュータを使用するという意味では、ビジネスデータベースを使用して誕生日祝いを贈る必要がある顧客を調べる場合のクエリと同じである)。
現在の日付以外の日付に関連した年齢を計算できる。たとえば、データベースに命日を格納すれば、ペットが死んだときの年齢を簡単に計算できる。
pet
テーブルに格納すると便利な情報をほかにも思いつくかもしれませんが、これまでに挙げた名前、飼い主、種類、性別、誕生日、命日だけで、現在は十分です。
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
から 255
の範囲で最適と思われる長さを指定できます(指定した長さが適切ではなく、後からもっと長いフィールドが必要なことがわかった場合のために、MySQL
には ALTER TABLE
ステートメントが用意されている)。
ペットの記録で性別を表すには、"m"
と "f"
、または "male"
と "female"
など、さまざまな表記が考えられます。ここは、"m"
と "f"
の 1
文字の値を使用するのが最も簡単です。
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
は、テーブルのカラムの名前やそのデータ型を忘れた場合など、いつでも使用できます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.