以下均已编码格式 UTF-8 为准。
- L 某个给定值的字节长度
- M 列值的最大长度
| 类型 | 字节 | 取值范围 | 建议宽度 |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 2 |
| SMALLINT | 2 | -32768 ~ 32767 | 3-4 |
| MEDIUMINT | 3 | -8388608 ~ 8388607 | 5-6 |
| INT | 4 | -2147683648 ~ 2147683647 | 7-9,ID字段等自增字段为默认长度10,并设置为unsigned |
| BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 20,注意要设置为unsigned |
| FLOAT | 4 | - | - |
| DOUBLE | 8 | - | - |
| DECIMAL(M,D) | - | - | - |
| CHAR(M) | 3*m | 0 ~ 255 | 固定长度 |
| VARCHAR(M) | L+1或L+2 | 1 ~ 65535 | 建议宽度为小于255,设为实际存储字段的最大长度 |
| TEXT | L+2 | 65535 | 长度大于255个字符的使用该方式存储 |
| MEDIUMTEXT | L+3 | 2^24-1 | - |
| LONGTEXT | L+4 | 2^32-1 | - |
| DATE | 3 | Y-m-d | - |
| TIME | 3 | h:i:s | - |
| DATETIME | 8 | Y-m-d H:i:s | - |
| TIMESTAMP | 4 | Y-m-d H:i:s | created_at/updated_at/deleted_at等类型的时间使用该类型 |
| YEAR | 1 | Y | 存储年份 |
在MySQL中,行的最大长度为 65535 个 字节,因此会影响到 VARCHAR 字段能容纳的最大字符数目,但是不会影响到TEXT系列类型,因为它们数据存储于表数据是分开的。