创建数据库是容易的部分,但是此时它是空的,如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
,因为列值的长度不同。这些列定义中的长度不必全部相同,也不必相同。您通常可以选择从到的 任何长度,无论您觉得最合理的长度。如果您选择不当,后来发现需要更长的字段,MySQL会提供一条语句。 owner
species
20
1
65535
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数据类型的更多信息,请参见 第11章,数据类型。