创建数据库是很容易的部分,但此时它是空的,正如 SHOW TABLES 告诉你的那样:

    1. mysql> SHOW TABLES;
    2. Empty set (0.00 sec)

    更难的部分是决定数据库的结构应该是什么:您需要哪些表以及每个表中应该包含哪些列。

    您需要一个包含每只宠物的记录的表。这可以称为宠物表,它应该至少包含每只动物的名字。因为名称本身不是很有趣,所以该表应该包含其他信息。例如,如果您的家庭中不止一个人养宠物,您可能需要列出每只动物的主人。您可能还想记录一些基本的描述性信息,例如物种和性别。

    年龄呢?这可能很有趣,但存储在数据库中并不是一件好事。随着时间的推移,年龄会发生变化,这意味着您必须经常更新您的记录。相反,最好存储一个固定值,例如出生日期。然后,每当您需要年龄时,您都可以将其计算为当前日期和出生日期之间的差异。 MySQL 提供了做日期运算的函数,所以这并不难。存储出生日期而不是年龄还有其他优点:

    • 您可以将数据库用于诸如为即将到来的宠物生日生成提醒等任务。 (如果您认为这种类型的查询有些愚蠢,请注意,您可能会在业务数据库的上下文中提出相同的问题,以识别您需要在当前一周或本月向其发送生日祝福的客户,为此计算机辅助的个人触摸。)
    • 您可以计算与当前日期以外的日期相关的年龄。例如,如果您将死亡日期存储在数据库中,您可以轻松计算出宠物死亡时的年龄。

    您可能会想到在 pet 表中有用的其他类型的信息,但到目前为止确定的信息就足够了:姓名、所有者、物种、性别、出生和死亡。

    使用 CREATE TABLE 语句指定表的布局:

    1. mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
    2. species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

    VARCHAR 是名称、所有者和物种列的不错选择,因为列值的长度不同。这些列定义中的长度不必全部相同,也不必是 20。您通常可以选择 1 到 65535 之间的任何长度,只要您认为最合理。如果你做了一个糟糕的选择,后来发现你需要一个更长的字段,MySQL 提供了一个 ALTER TABLE 语句。

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

    对出生和死亡列使用 DATE 数据类型是一个相当明显的选择。

    创建表后,SHOW TABLES 应该会产生一些输出:

    1. mysql> SHOW TABLES;
    2. +---------------------+
    3. | Tables in menagerie |
    4. +---------------------+
    5. | pet |
    6. +---------------------+

    要验证您的表是否按预期方式创建,请使用 DESCRIBE 语句:

    1. mysql> DESCRIBE pet;
    2. +---------+-------------+------+-----+---------+-------+
    3. | Field | Type | Null | Key | Default | Extra |
    4. +---------+-------------+------+-----+---------+-------+
    5. | name | varchar(20) | YES | | NULL | |
    6. | owner | varchar(20) | YES | | NULL | |
    7. | species | varchar(20) | YES | | NULL | |
    8. | sex | char(1) | YES | | NULL | |
    9. | birth | date | YES | | NULL | |
    10. | death | date | YES | | NULL | |
    11. +---------+-------------+------+-----+---------+-------+

    您可以随时使用 DESCRIBE,例如,如果您忘记了表中列的名称或它们的类型。