​数据库表管理的操作包括创建数据库表、修改数据库表、查看数据库表属性、删除数据库表。为了能够创建出一张合理的数据表,必须先学习MySQL的数据类型,因此本小节首先讲解MySQL的数据类型。

17.4.1 MySQL数据类型

MySQL的数据类型分为数值类型、字符串类型和日期和时间类型。数值类型用于表示各种数字,而数字又可以分为整数、定点数、浮点数。下面的表17-1展示了MySQL的各种数值类型​

表17-1MySQL数值类型​

类型​

大小​

范围​

意义​

TINYINT​

1 Bytes​

[-128,127]​

微小整数值​

SMALLINT​

2 Bytes​

[-32 768,32 767]​

小整数值​

MEDIUMINT​

3 Bytes​

[-8 388 608,8 388 607]​

中整数值​

INT或INTEGER​

4 Bytes​

[-2 147 483 648,2 147 483 647]​

整数值​

BIGINT​

8 Bytes​

[-9,223,372,036,854,775,808,9223372036854 775807]​

大整数值​

FLOAT​

4 Bytes​

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)​

单精度
浮点数值​

DOUBLE​

8 Bytes​

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)​

双精度
浮点数值​

DECIMAL​

DECIMAL(M,D)如果M>D,为M+2否则为D+2​

依赖于M和D的值​

定点数值​

MySQL的字符串类型也有很多,如表17-2所示。​

表17-2 MySQL字符串类型​

类型

大小

意义

CHAR

0-255 bytes

定长字符串

VARCHAR

0-65535 bytes

变长字符串

TINYBLOB

0-255 bytes

不超过 255 个字符的二进制字符串

TINYTEXT

0-255 bytes

短文本字符串

BLOB

0-65535 bytes

二进制形式的长文本数据

TEXT

0-65535 bytes

长文本数据

MEDIUMBLOB

0-16777215 bytes

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16777215 bytes

中等长度文本数据

LONGBLOB

0-4294967295 bytes

二进制形式的极大文本数据

LONGTEXT

0-4294967295 bytes

极大文本数据

注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储30个字符。CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。​

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。​

TEXT类型有4种:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。​

实际开发过程中,很多情况下都需要向数据库中存储日期、时间等类型的数据,MySQL定义了很多关于日期时间的数据类型,如表17-3所示。​

表17-3 日期和时间类型​

类型

大小

范围

格式

意义

DATE

3 bytes

1000-01-01-9999-12-31

YYYY-MM-DD

日期

TIME

3 bytes

-838:59:59-838:59:59

HH:MM:SS

时间值或时间

YEAR

1 bytes

1901-2155

YYYY

年份值

DATETIME

8 bytes

1000-01-01 00:00:00-

9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

日期和时间值

TIMESTAMP

4 bytes

1970-01-01 00:00:00-

2038-01-19 03:14:07

YYYYMMDD HHMMSS

日期和时间值

每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。​

17.4.2创建数据表

使用Workbench创建数据表是非常简单的操作,程序员只需要在视图窗格中先双击已经创建好的数据库,数据库就会被打开。当打开数据库之后,在数据库下方右键单击“Tables”,之后在弹出的右键菜单中单击“Create Table”菜单项,如图17-27所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_MySQL

图17-27创建数据表菜单项​

当单击了“Create Table”菜单项后,右边的主视图区中就会出现一个创建数据表的界面,如图17-28所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_MySQL_02

图17-28创建数据表界面​

在图17-28所示界面中,填写好数据表名称并选择数据表的字符集、排序规则,之后在下方填写第一个列的名称并选择这一列数据的类型。如果希望再增加一个列,可以在第一个列名称的下方继续添加新列的名称并选择其数据类型,这个操作与添加第一个列的步骤是相同的。当给该数据表添加完所有的列之后,单击界面下方的“Apply”按钮,将会进入一个确认界面,这界面主要是让程序员确认刚才所创建的数据表是否正确,并给出创建数据表的SQL语句,该界面如图17-29所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_数据库管理_03

图17-29 数据表确认界面​

如果程序员发现自己的表格设计的有问题,则单击“Cancel”按钮返回前一界面重新设计,否则单击“Apply”按钮进入一个数据表创建完成的提示界面,如图17-30所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_数据库管理_04

图17-30数据表已创建完成​

在这个界面上单击“Finish”按钮,对话框即可关闭,并且可以看到右边视图窗格中“Tables”下面出现了刚创建的数据表的名称。​

17.4.3修改数据表

程序员在创建数据表之后,如果发现数据表的创建有问题还可以再次修改数据表。修改数据表时先在视图窗格中用右键单击要修改表的名称,之后在弹出的右键菜单中单击“Alter Table”菜单项,如图17-31所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_MySQL_05

图17-31修改数据表菜单项​

单击了“Alter Table”菜单项后,会打开创建数据表的界面,只不过界面中已经有了之前表格的各种信息,程序员在这个界面中可以修改数据表的表名称、字符集以及进行为表格新增、修改或删除列等各项操作,修改完成后单击“Apply”按钮,之后的步骤与创建表格是完全一样的,都是先确认,再单击“Finish”按钮结束修改表格的操作。​

需要注意:修改数据表中某一个列的数据类型时,如果数据表中没有数据,则修改操作一定会成功,但如果表格中已经有了一些数据,修改操作可能会失败。例如数据表t1中有一个a列的类型是char,假如数据表中已经有了一些数据,并且a列上出现了“abc”这样的数据,那么把a列改成int型的操作就会失败,因为MySQL无法把“abc”转换成一个整数。​

17.4.3查看数据表信息

数据表被创建之后,程序员可以查看它的各项信息,包括查看表的名称、存储位置、表格中的列、索引等各种信息。数据表的信息界面也可以用右键菜单打开,程序员只需要用右键单击表的名称,在弹出的右键菜单中单击“Table Inspector”菜单项就能打开数据表的信息界面,如图17-32所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_MySQL_06

图17-32查看数据表信息​

从图17-32可以看出,这个界面是一个选项板,单击各个选项卡可以查看与数据表相关的各种信息。​

17.4.4删除数据表

删除数据表的操作也可以通过右键菜单完成,程序员在要删除的数据表上单击右键,在弹出的右键菜单中单击“Drop Table”,如图17-33所示。​

第十七章《MySQL数据库及SQL语言简介》第4节:数据库表管理_数据库管理_07

图17-33删除数据表菜单项​

当单击“Drop Table”菜单项后就会弹出一个确认对话框,在这个对话框上单击“Drop Now”即可删除数据表。

本文字版教程还配有更详细的视频讲解,小伙伴们可以点击这里观看。