本文列举了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年某时 | 有最大值限制 |