常规字段

(如MySQL)例如,INT(11)中的11就是显示宽度,不影响存储范围,只影响显示时的格式。

数据类型 字节数 有符号取值范围 无符号取值范围 最大可变长度
TINYINT 1 -128 到 127 0 到 255 3
SMALLINT 2 -32768 到 32767 0 到 65535 5
MEDIUMINT 3 -8388608 到 8388607 0 到 16777215 8
INT/INTEGER 4 -2147483648 到 2147483647 0 到 4294967295 10
BIGINT 8 -9223372036854775808 到 9223372036854775807 0 到 18446744073709551615 20
列类型 需要的存储量
FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53
FLOAT 4 个字节
DOUBLE 8 个字节
DOUBLE PRECISION 8 个字节
REAL 8 个字节
DECIMAL(M,D) M字节(D+2 , 如果M < D)
NUMERIC(M,D) M字节(D+2 , 如果M < D)

日期和时间

列类型 需要的存储量 关键区别 适用场景
DATE 3 个字节 仅存储日期(年-月-日),范围:'1000-01-01' 到 '9999-12-31' 记录生日、注册日期等仅需日期的场景
DATETIME 8 个字节 存储日期+时间(年-月-日 时:分:秒),范围:'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' 需要精确日期时间的场景(如订单时间),且不涉及时区转换
TIMESTAMP 4 个字节 存储日期+时间,范围:'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC 记录时间戳(如日志时间),需自动时区转换或节省存储空间
TIME 3 个字节 仅存储时间(时:分:秒),范围:'-838:59:59' 到 '838:59:59' 记录时间段(如课程时长、营业时间)
YEAR 1 字节 仅存储年份,范围:1901 到 2155(MySQL) 记录年份信息(如入学年份、成立年份),需最小化存储空间

Blob长度

BLOB最大可为65535字节(64 KB)。

MEDIUMBLOB for 16777215 byte (16 MB)

LONGBLOB for 4294967295 byte (4 GB)

Mysql Text文本长度

对于utf-8:一个中文占三个字符,一个英文占一个字符

对于GBK:一个中文占两个字符,一个英文占一个字符

有前面两个知识点总结一下就是

如果使用的是utf-8 ,text并不能存65535个中文字符而是 65535/3 = 21845 即text只能存21845个文字。GBK同理。

TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB