3.3.2 创建表

创建数据库是比较容易的部分,但此时它是空的,正如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,因为列值的长度各不相同。这些列定义中的长度不必全部相同,也不必是. 您通常可以选择从到 的 任意长度,只要您觉得最合理即可。如果你做出了错误的选择,后来发现你需要一个更长的字段,MySQL 会提供一个声明。 ownerspecies20165535ALTER TABLE

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

和列的DATE数据类型 的使用 是一个相当明显的选择。 birthdeath

一旦你创建了一个表,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 数据类型的更多信息,请参阅 第 11 章,数据类型