创建数据库很容易,但在这一点上,它是空的,就像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);

VARCHAR对于name、owner和species列是个不错的选择,因为列值的长度是变化的。在这些列定义中,长度不必全部相同,也不必是20。通常可以选择任意长度,从1到65535,选择最合理的长度即可。如果您做了一个不好的选择,后来发现需要更长的字段,MySQL提供ALTER TABLE语句进行更改。

可以选择几种类型的值来表示动物记录中的性别,例如'm'和'f',或也许是“男性”和“女性”。使用单个字符“m”和“f”是最简单的。

为出生日期和死亡日期列使用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,例如,如果您忘记了表中列的名称或它们的类型,都可以使用DESCRIBE来查看。