Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Creating a Table

5.3.2 创建表

创建数据库是容易的一部分,但是到这个点上,它还是空的,因为SHOW TABLES 告诉你:

mysql> SHOW TABLES;
Empty set (0.00 sec)

更难的一部分是确定数据库的结构:需要哪些表,每个表中应该有哪些列。

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

年龄呢?那可能很有意思,但是存储在数据库不太好,因为年龄随着时间变化,需要经常更新记录。反而存储出生日期更好,然后你可以计算当前日期与出生日期的差异。MySQL 提供了日期算术函数,所以这不是难事。存储出生日期而不是年龄还有其他优点:

  • 您可以使用数据库来完成任务,如生成宠物生日提醒。如果您认为这种查询有些傻,注意,这在业务数据库中也问同一个问题:识别需要发送生日祝福的客户(如果您认为这类查询有些傻,注意,这在业务数据库中也问同一个问题:识别需要发送生日祝福的客户)。

  • 您可以根据其他日期来计算年龄,例如,如果在数据库中存储宠物死亡日期,可以轻松地计算宠物当时的年龄。

您可能会想到其他类型的信息将是有用的,但是已经识别出的信息足够:名称、所有者、种类、出生日期和死亡日期。

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

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

VARCHAR对于名称、所有者和种类列是一个不错的选择,因为列值的长度不同。这些列定义中的长度不一定相同,也不一定是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章 数据类型