目录

一、数值类型

二、字符串类型 

三、日期类型 

一、数值类型

数据类型

类型大小

简述

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