Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

5.3.2 创建表

创建数据库是件容易的事情,但是现在它是空的,如 SHOW TABLES 告诉你:

mysql> SHOW TABLES;
Empty set (0.00 sec)

更难的部分是决定你的数据库结构应该是什么样的:你需要什么表格,每个表格中应该有什么列。

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

怎么样关于年龄?这可能是有趣的,但是它不是一个好的数据库存储项。年龄会随着时间的推移而改变,这意味着你需要经常更新记录。相反,存储出生日期是一个更好的选择。然后,当你需要年龄时,你可以计算当前日期和出生日期之间的差异。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 是名称、主人和物种列的不错选择,因为这些列的值长度各不相同。这些列定义的长度不需要相同,也不需要是 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 章:数据类型