创建数据库很容易,但此时它是空的,正如 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'
。
对 birth
和 death
列使用 DATE
数据类型是一个相当明显的选择。
创建表后,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 章,数据类型。