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
。您通常可以从1
到65535
之间任意选择一个合理的长度。如果您后来发现需要更长的字段,MySQL 提供了ALTER TABLE
语句。
动物记录中可以选择多种类型来表示性别,例如'm'
和'f'
, 或者可能是'male'
和'female'
。使用单个字符'm'
和'f'
最简单。
使用DATE
数据类型来定义birth
和death
列是一个明显的选择。
创建表后,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章 数据类型。