数据类型包括整型、浮点数类型和定点数类型、日期与时间类型、字符串和二进制类型。
一、整数类型
MySQL的整数类型分为5种:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。
不同整数类型所占用的字节数和取值范围都是不同的。如下图:
二、浮点数和定点数类型
在MySQL中,存储的小数都是使用浮点数和定点数来表示的。
浮点数的类型有2种:单精度浮点数类型(FLOAT)、双精度浮点类型(DOUBLE)。
定点数类型只有1种:DECIMAL类型。
占用的字节数和取值范围如下图:
注意:--DECIMAL类型的取值范围与DOUBLE类型相同。
--注意的是DECIMAL类型的有效取值范围是由M和D决定的。
--其中,M表示的是数据的长度,D表示的是小数点后的长度。
三、时间与日期类型
在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型:YEAR、DATE、TIME、DATETIME、TIMESTAMP
如下图列举了这些MySQL中日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值。
注意:如果插入的数值不合法,系统会自动将对应的零值插入数据库中。
三、字符串和二进制类型
为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型如下图:
类型 | 字节数(大小) | 用途 |
CHAR | 0-255字节 | 定长字节符 |
VARCHAR | 0-65535字节 | 变长字节符 |
BLOB | 0-65535字节 | 二进制形式的长文本数据 |
TINYBLOB | 0-255字节 | 不超过255个字符的二进制字符串 |
MEDIUMBLOB | 0-16777215字节 | 二进制形式的中等长度文本数据 |
LONGBLOB | 0-4294967295字节 | 二进制形式的极大文本数据 |
TEXT | 0-65535字节 | 长文本数据 |
TINYTEXT | 0-255字节 | 短文本字符串 |
MEDIUMTEXT | 0-16777215字节 | 中等长度文本数据 |
LONGTEXT | 0-4294967295字节 | 极大文本数据 |
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。
BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。