跳到主要内容

3.3.2 创建表

创建数据库很简单,但此时它是空的,正如 SHOW TABLES 告诉你的:

mysql> SHOW TABLES;
Empty set (0.00 sec)

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

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

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

  • 你可以使用该数据库执行任务,例如为即将到来的宠物生日生成提醒。(如果你认为这种类型的查询有点愚蠢,请注意,这是你在商业数据库中可能会问的问题,以确定你需要在本周或本月向其发送生日祝福的客户,以便进行计算机辅助的个人触摸。)
  • 你可以根据当前日期以外的日期计算年龄。例如,如果你将死亡日期存储在数据库中,你可以轻松计算宠物死亡时的年龄。

你可能会想到在宠物桌上有用的其他类型的信息,但到目前为止确定的信息已经足够了:name(姓名)、owner(所有者)、species(物种)、sex(性别)、birth(出生)和 death(死亡)。

使用 CREATE 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 语句。

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

birthdeath 列使用 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

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

原文链接