创建数据库很容易,但此时它是空的,正如 SHOW TABLES
所示
mysql> SHOW TABLES;
Empty set (0.00 sec)
更难的部分是确定数据库的结构:需要哪些表以及每个表中应该包含哪些列。
您想要一个表,其中包含您每个宠物的记录。这可以称为 pet
表,它至少应该包含每只动物的名称。因为名称本身并不有趣,所以该表应该包含其他信息。例如,如果您的家人中不止一个人养宠物,您可能希望列出每只动物的主人。您可能还想记录一些基本的描述性信息,如物种和性别。
年龄如何?这可能令人感兴趣,但它不是存储在数据库中的好东西。随着时间的推移,年龄会发生变化,这意味着您必须经常更新您的记录。相反,最好存储一个固定值,如出生日期。然后,每当您需要年龄时,您都可以将其计算为当前日期和出生日期之间的差值。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
是 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 |
+---------------------+
若要验证您的表是否按预期方式创建,请使用 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 章,数据类型。