相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  创建表

5.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);

VARCHARnameownerspecies 列的良好选择,因为列值长度不同。这些列定义中的长度不必全部相同,也不必是 20。通常,您可以从 165535 中选择任何长度,无论对您来说最合理。如果您做出了错误的选择,并且后来发现您需要更长的字段,MySQL 提供了 ALTER TABLE 语句。

可以选择几种类型的值来表示动物记录中的性别,例如 'm''f',或者可能是 'male''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 数据类型的更多信息,请参见 第 13 章,数据类型