MySQL数据类型
常规字段
(如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同理。
- 使用text时千万要注意,防止超长如不够用了可以使用mediumtext或者longtext
TINYTEXT | 256 bytes | |
TEXT | 65,535 bytes | ~64kb |
MEDIUMTEXT | 16,777,215 bytes | ~16MB |
LONGTEXT | 4,294,967,295 bytes | ~4GB |
Loading...