# MySQL数据类型

🐴

# 前言

MySQL中定义数据类型对数据库的优化是非常重要的,在MySQL中的数据类型大致可以分为三类:

  • 数值类型
  • 字符类型
  • 时间类型

# 数值类型

类型 大小及范围 作用
tinyint(m) 1个字节 范围(-128~127) 小整数
smallint(m) 2个字节 范围(-32768~32767) 大整数
mediumint(m) 3个字节 范围(-8388608~8388607) 大整数
int(m) 4个字节 范围(-2147483648~2147483647) 大整数
bigint(m) 8个字节 范围(+-9.22*10的18次方) 极大整数
float(m,d) 4个字节 8位精度 m总个数,d小数位 单精度浮点数值
double(m,d) 8个字节 16位精度 m总个数,d小数位 双精度浮点型
decimal(m,d) 参数m是总个数,d是小数位 定点数

关于浮点数float,double,decimal,的区别:float在内存中占用4个字节,而double在内存中占用8个字节,所以float的精度没有double高,但是同等条件下CPU处理单精度浮点数的效率要高。

在存储同样范围值时,通常decimal使用的空间更少,一般在存储金额时会使用decimal

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

# 字符类型

类型 大小 说明
char 0-255字节 定长字符串
varchar 0-65535 字节 变长字符串
tinyblob 0-255字节 不超过 255 个字符的二进制字符串
tinytext 0-255字节 短文本字符串
blob 0-65535字节 二进制形式的长文本数据
text 0-65535字节 长文本数据
mediumblob 0-16777215字节 二进制形式的中等长度文本数据
mediumtext 0-16777215字节 中等长度文本数据
longblob 0-4294967295字节 二进制形式的极大文本数据
longtext 0-4294967295字节 极大文本数据
  • char类型是定长的,而varchar是变长的,char(m)存储的值长度小于m时,MySQL会在其右边用空格补足,而varchar存储的值是只占用值得本身大小加上一个记录长度的一个字节。char在处理速度上要比varchar快,但是比较占用存储空间
  • blobtext 都是为存储很大的数据而设计的数据类型,分别采用二进制和字符方式存储。

# 日期时间类型

类型 大小 说明
date 3个字节 以YYYY-MM-DD的格式显示,比如:2009-07-19
time 3个字节 以HH:MM:SS的格式显示。比如:11:22:30
year 1个字节 以YYYY的格式显示如:2019
datetime 8个字节 以YYYY-MM-DD HH:MM:SS的格式显示如:2019-09-19 12:11:11
timestamp 4个字节 以YYYY-MM-DD HH:MM:SS的格式显示,比如:2019-08-19 12:11:11

timestamp存储和时区相关,即会根据时区做转换,而datetime存储和时区不相关,不会做转换;


参考文献

最近更新时间: 7/2/2021, 11:27:27 AM