Mysql列类型
目录
Mysql的数据列类型
列类型
数值类型
类型 | 存储空间 | 解释 |
---|---|---|
TINYINT | 8 位 | 非常小的整数值范围,通常用于表示非常小的数值。 |
SMALLINT | 16 位 | 较小的整数值范围。 |
MEDIUMINT | 24 位 | 中等大小的整数值范围。 |
INT | 32 位 | 常规大小的整数值范围。 |
BIGINT | 64 位 | 非常大的整数值范围,适合处理超大数值。 |
浮点数与高精度小数类型
类型 | 占用空间 | 解释 |
---|---|---|
FLOAT | 4 字节 | 单精度浮点数,占用 4 字节,精度约为 7 位十进制数。 |
DOUBLE | 8 字节 | 双精度浮点数,占用 8 字节,精度约为 15 位十进制数。 |
DECIMAL | 取决于定义的精度和范围 | DECIMAL 类型的存储空间取决于定义的小数位数和整数位数,每 4-9 位需要 4 字节 |
DECIMAL 类型的占用空间详细说明
DECIMAL(M, D) 类型中,
M
表示数字的总位数(整数位数加小数位数),D
表示小数位数。DECIMAL 类型的存储空间按以下规则计算:
- 每 9 位数字(整数和小数位)占用 4 字节。
- 若剩余数字少于 9 位:
- 1-2 位占 1 字节
- 3-4 位占 2 字节
- 5-6 位占 3 字节
- 7-9 位占 4 字节
例子:
DECIMAL(5, 2):总共 5 位数字,其中 2 位是小数位。因此,占用 3 字节。
DECIMAL(18, 9):总共 18 位数字,其中 9 位是小数位。因此,占用 8 字节。
字符串类型
类型 | 解释 |
---|---|
CHAR | 定长字符串,适合存储固定长度的字符串,如MD5值等。末尾空格会被删除。 |
VARCHAR | 变长字符串,适合存储长度可变的字符串,节省存储空间。末尾空格会被保留。 |
BLOB | 二进制大对象,存储大量二进制数据。 |
TEXT | 大文本数据类型,存储大量字符数据。 |
时间和日期类型
类型 | 存储空间 | 解释 |
---|---|---|
DATETIME | 8 字节 | 保存从1001年到9999年的日期时间,精度为秒,与时区无关。 |
TIMESTAMP | 4 字节 | 保存从1970年到2038年的UNIX时间戳,精度为秒,与时区相关。 |
优化选择建议
- 数据类型选择:通常更小的类型更好,因为它们占用更少的存储空间,并且处理速度更快。
- 避免NULL:尽量避免使用可为NULL的列,因为它会使索引优化更复杂。
- 定长与变长字符串:根据数据的长度特性选择CHAR或VARCHAR,定长字符串适合长度固定的数据,变长字符串适合长度可变的数据。
- 选择合适的表示符:整数类型通常是标识列的最佳选择,避免使用随机字符串作为标识符