3.3.2 创建 table

创建数据库很容易,但是此时它是空的,因为SHOW TABLES告诉您:

mysql> SHOW TABLES;
Empty set (0.00 sec)

较难的部分是确定数据库的结构应为:您需要哪些 table 以及每个 table 中应包含哪些列。

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

年龄呢?这可能很有趣,但是将其存储在数据库中并不是一件好事。年龄随着时间的流逝而变化,这意味着您必须经常更新记录。相反,最好存储一个固定值,例如出生日期。然后,只要需要年龄,就可以将其计算为当前日期与出生日期之间的差。 MySQL 提供了用于进行日期算术的函数,因此这并不困难。存储出生日期而不是年龄还有其他好处:

  • 您可以使用该数据库执行诸如为即将到来的宠物生日生成提醒之类的任务。 (如果您认为这种查询有些愚蠢,请注意,在业务数据库的上下文中,您可能会问同样的问题,以标识您需要在当前一周或当月向其发送生日祝福的 Client,为此计算机辅助的个人风格.)

  • 您可以相对于当前日期以外的日期计算年龄。例如,如果将死亡日期存储在数据库中,则可以轻松计算宠物死亡时的年龄。

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

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

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

VARCHARnameownerspecies列的不错选择,因为列值的长度不同。这些列定义中的长度不必全部相同,也不必为20。您通常可以选择从165535的任何长度,这对您来说似乎最合理。如果您选择不当,后来发现需要更长的字段,则 MySQL 提供ALTER TABLE语句。

可以选择几种类型的值来 table 示动物 Logging 的性别,例如'm''f''male''female'。使用单个字符'm''f'最简单。

对于birthdeath列使用DATE数据类型是一个显而易见的选择。

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

mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet                 |
+---------------------+

要验证您的 table 是按预期方式创建的,请使用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    |       |
+---------+-------------+------+-----+---------+-------+

例如,如果您忘记了 table 中列的名称或列的类型,则可以随时使用DESCRIBE

有关 MySQL 数据类型的更多信息,请参见第 11 章,数据类型