Mysql数据类型的大小及范围

Posted by mingo on 2019-04-04 12:18

本文列举了Mysql里常见的数据类型占用空间大小及表达的范围, 方便工作中查看

数字型

type size signed range unsigned range
TINYINT 1 byte (-128, 127) (0, 255)
SMALLINT 2 byte (-32768, 32767) (0, 65535)
MEDIUMINT 3 byte (-8388608, 8388607) (0, 16777215)
INT 4 byte (-2147483648, 2147483647) (0, 4294967295)
BIGINT 8 byte (-9233372036854775808, 9223372036854775807) (0, 18446744073709551615)
FLOAT 4 byte 1E-38, 1E38 (只是列出精度, 并非确切数据) 1E-38, 1E38 (只是列出精度, 并非确切数据)
DOUBLE 8 byte 1E-308, 1E308 (只是列出精度, 并非确切数据) 1E-308, 1E308 (只是列出精度, 并非确切数据)
DECIMAL(M, D) max(M, D) + 2 依赖于M和D的值 依赖于M和D的值

字符型

type size remark
CHAR 0 ~ 255 byte 定长字符串
VARCHAR 0 ~ 65535 byte 变长字符串, 最大长度受限于最大行长度

时间类型

type size range remark
DATE 3 byte 1000-01-01 ~ 9999-12-31 YYYY-MM-DD
TIME 3 byte ‘-838:59:59’/’838:59:59’ HH:MM:SS
DATETIME 8 byte 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 混合日期和时间值
TIMESTAMP 4 byte 1970-01-01 00:00:00 ~ 2037年某时 有最大值限制