MySQL基础学习笔记之——选择合适的数据类型

选择合适的数据类型

1、CHAR 与 VARCHAR

CHAR 与 VARCHAR 类型类似,都是用来存储字符串,但它们保存和检索的方式不同。CHAR 属于固定长度的字符类型,而 VARCHAR 属于可变长的字符类型。

下表显示了各种字符串值保存到 CHAR(4) 和 VARCHAR(4) 的结果:

CHAR(4) 存储需求 VARCHAR(4) 存储需求
‘’ ’ ’ 4 个字节 ‘’ 1 个字节
‘ab’ 'ab ’ 4 个字节 'ab ’ 3 个字节
‘abcd’ ‘abcd’ 4 个字节 ‘abcd’ 5 个字节
‘abcdefgh’ ‘abcd’ 4 个字节 ‘abcd’ 5 个字节

检索时,CHAR 列删除了尾部空格


2、TEXT 和 BLOB

保存比较大的文本时,通常会选择使用 TEXT 和 BLOB。二者的主要差别在于 BLOB 能用来保存二进制数据,比如照片;而 TEXT 只能保存字符数据。TEXT 和 BLOB 存在的一些问题:

  1. BLOB 和 TEXT 值会引起一些性能问题,特别是在执行了大量的删除操作时

    删除操作会在数据表中留下很大的 “空洞”,以后填入这些 “空洞” 的记录在插入的性能上会有影响。为了提升性能,建议定期使用 OPTIMIZE TABLE 功能对这类表进行碎片整理。

  2. 可以使用合成的索引来提高大文本字段的查询性能

  3. 在不必要的时候避免检索大型的 BLOB 和 TEXT

  4. 把 BLOB 或 TEXT 列分离到单独的表中


3、浮点数与定点数

浮点数一般用于表示含有小数点部分的数值。当一个字段被定义为浮点数类型时,如果插入数据的精度超过该列定义的实际精度,则插入值会被四舍五入到实际定义的精度值,然后插入,四舍五入的过程不会报错。

定点数不同于浮点数,定点数实际上是以字符串形式存放的,所以定点数可以更精确地保存数据。如果实际插入的数值精度大于实际定义的精度,则会警告,但是实际精度按照四舍五入插入;如果是在传统模式下,会报错,不能插入。


4、日期类型选择

见《MySQL 支持的数据类型》。

猜你喜欢

转载自blog.csdn.net/qq_36879493/article/details/108092379