目录
一、数值类型
二、字符串类型
三、日期类型
一、数值类型
数据类型 | 类型大小 | 简述 |
bit(M) | 由M指定(范围在1~64之间),默认为1 | 常用于表示布尔类型 |
tinyint | 1字节 | 常用于表示布尔类型 |
smallint | 2字节 | |
int | 4字节 | |
bigint | 8字节 | |
float(M,D) | 4字节 | 浮点数,单精度,会发生精度丢失 |
double(M,D) | 8字节 | 浮点数,双精度,会发生精度丢失 |
decimal(M,D) | M指定整个数字的最大位数,D表示小数点位数 | 以字符串形式存储 |
numeric(M,D) | M指定整个数字的最大位数,D表示小数点位数 | 以字符串形式存储 |
MySQL中,数据类型存在无符号数(unsigned)。但是,MySQL官方文档中明确说明不建议使用,并表示会在未来的某个版本中直接删除无符号数。
float和double类型不精确,无法通过直接比较得到大小结果。如果需要比较浮点数,可以通过作差法,即浮点数之间的差小于某个误差值时,则视为相等。
需要精确计算小数时,使用decimal和numeric类型,可以做到精确计算。但这两种类型以类似字符串的形式存储数字,所以在空间上占用更大,计算也更耗时。
二、字符串类型
数据类型 | 类型大小 | 简述 |
varchar(size) | 0-65,535字节,由size指定长度上限,单位是字符 | 可变长度字符串 |
text | 0-65,535字节 | 长文本数据 |
mediumtext | 0-16,777,215字节 | 中等长度文本数据 |
blob | 0-65,535字节 | 二进制形式的长文本数据 |
varchar 可以通过size指定长度上限,单位是字符,与一个字符占多少个字节无关。
blob 是按二进制形式储存数据的,这意味着它可以存储任意形式的数据,如图片,声音等。但是由于存储的数据大小限制为64kb,因此使用场景也不多。
三、日期类型
数据类型 | 类型大小 | 简述 |
datatime | 5字节 | 范围从1000到9999年,不会进行时区的 检索及转换 |
timestamp | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 |
默认情况下,DATETIME的值范围为1000-01-01 00:00:00至9999-12-31 23:59:59。格式为YYYY-MM-DD HH:MM:SS。在MySQL 5.6.4之前,DATETIME值需要8字节存储而不是5个字节。
TIMESTAMP值范围从1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。可以看到,在2038年,timestamp类型能代表的时间将耗尽。因此如果要存储超过2038年的时间值,则应使用 datatime 而不是 timestamp 。