Mysql创建表

来自泡泡学习笔记
跳到导航 跳到搜索

创建数据库是容易的部分,但此时它是空的,如 SHOW TABLES 所示:

mysql> SHOW TABLES;
Empty set (0.00 sec)

更难的部分是决定数据库的结构:需要哪些表以及每个表中应该有哪些列。

您需要一张包含每只宠物记录的表。这可以称为宠物表,至少应该包含每只动物的名字。因为仅仅名字并不是很有趣,所以表格应该包含其他信息。例如,如果您家里有多个人养宠物,您可能想列出每只动物的主人。您也可能想记录一些基本的描述信息,如物种和性别。

年龄怎么样?那可能很有趣,但在数据库中存储它并不是一个好主意。年龄随着时间的流逝而变化,这意味着您必须经常更新记录。相反,更好的方法是存储一个固定值,如出生日期。然后,每当您需要年龄时,都可以将当前日期与出生日期之差计算出来。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 数据类型是相当明显的选择。


创建表格后,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,例如,如果您忘记了表格中的列名或它们的类型。