### 3.3.2创建表格

[](<>)[](<>)

创建数据库是简单的部分，但在这一点上它是空的，就像[`展示桌子`](show-tables.html)告诉你：

```
mysql> SHOW TABLES;
Empty set (0.00 sec)
```

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

你想要一个包含每个宠物记录的表格。这可以称为`聚酯食品包装材料`表，并且它至少应该包含每种动物的名字。因为名称本身不是很有趣，所以表中应该包含其他信息。例如，如果你家里不止一个人养宠物，你可能想列出每只动物的主人。你可能还想记录一些基本的描述性信息，比如物种和性别。

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

-   您可以使用该数据库执行任务，例如为即将到来的宠物生日生成提醒。（如果你认为这种类型的查询有点傻，请注意，这是你在商业数据库中可能会问的同一个问题，以确定你需要在当前一周或一个月向哪些客户发送生日问候，以便进行计算机辅助的个人接触。）

-   您可以根据当前日期以外的日期计算年龄。例如，如果将死亡日期存储在数据库中，则可以轻松计算宠物死亡时的年龄。

    你可能会想到其他类型的信息，这些信息在未来会很有用`聚酯食品包装材料`表中，但到目前为止确定的已经足够了：名称、所有者、物种、性别、出生和死亡。

    使用[`创建表格`](create-table.html)语句来指定表的布局：


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

[`瓦尔查尔`](char.html)是一个不错的选择`名称`,`物主`和`种`列，因为列值的长度不同。这些列定义中的长度不必都相同，也不必相同`20`.你通常可以从中选择任意长度`1.`到`65535`，你觉得最合理的。如果你做了一个糟糕的选择，后来发现你需要一个更长的字段，MySQL提供了一个[`改变桌子`](alter-table.html)陈述

可以选择几种类型的值来表示动物记录中的性别，例如`我是`和`“f”`，或者`“男性”`和`“女性”`.使用单个字符最简单`我是`和`“f”`.

使用[`日期`](datetime.html)数据库的数据类型`出生`和`死`列是一个相当明显的选择。

创建表之后，[`展示桌子`](show-tables.html)应该产生一些产出：

```
mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| pet                 |
+---------------------+
```

要验证表的创建方式是否符合预期，请使用[`描述`](describe.html)声明：

```
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.html)例如，如果您忘记了表中列的名称或它们的类型，可以随时使用。

有关MySQL数据类型的更多信息，请参阅[第11章，*数据类型*](data-types.html).
