3.3.2 Creating a Table

创建数据库是很简单的部分,但在创建之后其是空的,像SHOW TABLES告诉你的那样:

mysql> show tables;
Empty set (0.00 sec)

比较难的部分是你的数据库的结构是什么样的:你需要什么样的表,表里的列应该是什么样的。

如需要一个表包含你的每个宠物的记录。这个表可以被称为pet表,它应该包含最小值,每个名字的名字。因为名字不是最关心的问题,表应该包含其他的信息。例如,如果你家庭中超过一一个养宠物,你想列出每个动物的拥有者。你也可能想记录一些别的基本的描述信息例如种类和性别。

年龄怎么样?这可能是感兴趣的,但他不适合存储于数据库。年龄虽着时间的改变而改变,这也就意味着你需要经常更新你的数据库。替代的,最好以日期的形式存储动物的出生日期。MySQL提供函数用于日期的计算,因此这样是不困难的。存储出生日期而不是年龄具有其他的优式:

  • 你可以询问数据库来生成宠物生日的提醒(如果你认为这种类型的查询是这样的愚蠢,注意这也会有同样的问题你可能在商业数据库中遇到的,如你需在当前月或周要发送生日祝的人)
  • 你可以计算出指定日期宠物的年龄而不是当天日期的。例如,如果你存储了死亡日期在数据库中,你可以计算出这个宠物到死的时候多大了

你也可能想到别外类型的信息可能会很有用在pet表中,但使用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
);

VARCHAR用于name, owner 和 species列是很好的选择因为这些列是变长的。这些类定义的长度不需要全部都一样,也不用全部都是20。你可以正常的从1-65535中选择,在你看来最合理的。如果你做出了错误的选择并在以后意识到你需要一个较长的字段,MySQL提供了ALTER TABLE语句。

在动物记录中一些类型值可以被选择来代表运行的性别,例如'm'和'f',或'male'和'female'。最简单的是使用单一的字符'm'和'f'

使用DATE作为birth和death列的数据类型是显而易见的。

当你在创建了表之后,SHOW TABLES应该产生一些输出:

mysql> SHOW TABLES;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| pet                 |
+---------------------+
1 row in set (0.00 sec)

较难创建的表是你期望的,使用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    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

你可以在任何时候使用DESCRIBLE语句,例如,你忘记了表中列的名字或类型。

获取更多关于MySQL数据类型的信息,查看Chapter 11, Data Types.

results matching ""

    No results matching ""