mysql8.0 数据类型和运算符 2 如何选择数据类型

本文详细介绍了MySQL中的各种数据类型及其应用场景,包括整数和浮点数、日期与时间类型、CHAR与VARCHAR的选择、ENUM和SET的特性、BLOB和TEXT的区别。通过合理选择数据类型,可以有效地提升数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 提供了大量的数据类型,为了优化存储、提高数据库性能,在任何情况下均应使用最精确的类型,即在所有可以表示改列值的类型中,该类型使用的存储最小。

1. 整数和浮点数

如果不需要小数部分,就使用整数来保存数据;如果需要表示小数部分,就使用浮点数类型。浮点类型包括FLOAT和DOUBLE类型。DOUBLE类型精度比FLOAT类型高,因此要求存储精度较高时应选择DOUBLE类型。

2. 浮点数和定点数

浮点数相对定点数的优势是:在长度一定的情况下,浮点数能表示更大的数据范围。由于浮点数容易产生误差,因此对精度要求比较高时,建议使用DECIMAL来存储。

3. 日期与时间类型

MySQL对于不同种类的日期和时间有很多数据类型,只需要记录年份,使用YEAR类型即可;如果只记录时间则使用TIME类型。

同时记录日期和时间,可以使用TIMESTAMP或者DATETIME类型。由于TIMESTAMP列的取值范围小于DATETIME的取值范围,因此存储范围比较大的日期最好使用DATETIME。

TIMESTAMP也有一个DATETIME不具备的属性,当插入一条记录但并没有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前时间。另外TIMESTAMP在空间上比DATETIME更有效。

4. CHAR 与VARCHAR之间的特点与选择

CHAR和VARCHAR的区别如下:

        CHAR是固定长度字符,VARCHAR是可变长度字符。

        CHAR会自动删除插入数据的尾部空格,VARCHAR不会删除尾部空格。

CHAR是固定长度,所以它的处理速度比VARCHAR的速度更快,但是它的缺点是浪费存储空间,所以对存储不大但是速度上有要求的可以使用CHAR类型,反之可以使用VARCHAR类型来实现。

存储引擎对于选择CHAR和VARCHAR的影响:

        对于MyISAM存储引擎:最好使用固定长度的数据列代替可变长度的数据列。这样可以使整个表静态化,从而使数据检索更快,用空间换时间。

        对于InnoDB存储引擎:使用可变长度的数据列,因为InnoDB数据表的存储格式不分固定长度和可变长度,因此使用CHAR不一定比使用VARCHAR更好,但是由于VARCHAR是按照实际的长度存储的,比较节省空间,所以对磁盘I/O和数据存储总量比较好。

5. ENUM和SET

ENUM只能取单值,它的数据列表是一个枚举集合。

SET可取多值。它的合法取值列表最多允许64个成员。

6. BLOB和TEXT

BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息。BLOB存储图片、音频信息等,而TEXT只能存储纯文本文件。

-- end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值