MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
一、整数类型
数据类型 |
字节数 |
无符号数的取值范围 |
有符号数的取值范围 |
TINYINT |
1 |
0~255 |
-128~127 |
SMALLINT |
2 |
0~65535 |
-32768~32768 |
MEDIUMINT |
3 |
0~16777215 |
-8388608~8388608 |
INT |
4 |
0~4294967295 |
-2147483648~2147483648 |
BIGINT |
8 |
0~18446744073709551615 |
-9223372036854775808~9223372036854775808 |
二、浮点型类型和定点数类型
三、数据类型 |
字节数 |
有符号的取值范围 |
无符号的取值范围 |
FLOAT |
4 |
-3.402823466E+38~ -1.175494351E-38 |
0和1.175494351E-38~ 3.402823466E+38 |
DOUBLE |
4 |
-1.7976931348623157E+308~ 2.2250738585072014E-308 |
0和2.2250738585072014E-308~ 1.7976931348623157E+308 |
DECIMAL(M,D) |
M+2 |
-1.7976931348623157E+308~ 2.2250738585072014E-308 |
0和2.2250738585072014E-308~ 1.7976931348623157E+308 |
注意DECIMAL类型的取值范围与DOUBLE类型相同。
注意的是DECIMAL类型的有效取值范围是由M和D决定的。
其中,M表示的是数据的长度,D表示的是小数点后的长度。
四、日期和时间类型
五、数据类型 |
字节数 |
取值范围 |
日期格式 |
零值 |
YEAR |
1 |
1901~2155 |
YYYY |
0000 |
DATE |
4 |
1000-01-01~9999-12-3 |
YYYY-MM-DD |
0000-00-00 |
TIME |
3 |
-838:59:59~838:59:59 |
HH:MM:SS |
00:00:00 |
DATETIME |
8 |
1000-01-01 00:00:00~ 9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS |
0000-00-00 00:00:00 |
TIMESTAMP |
4 |
1970-01-01 00:00:01~ 2038-01-19 03:14:07 |
YYYY-MM-DD HH:MM:SS |
0000-00-00 00:00:00 |
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时用“零"值。
五、字符串类型
数据类型 |
类型说明 |
CHAR |
用于表示固定长度的字符串 |
VARCHAR |
用于表示可变长度的字符串 |
BINARY |
用于表示固定长度的二进制数据 |
VARBINARY |
用于表示可变长度的二进制数据 |
BOLB |
用于表示二进制大数据 |
TEXT |
用于表示大文本数据 |
ENUM |
表示枚举类型,只能存储一个枚举字符串值 |
SET |
表示字符串对象,可以有零或多个值 |
BIT |
表示位字段类型 |
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。
BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“ ”补齐,最终达到指定长度。