IE盒子

搜索
查看: 93|回复: 1

MySQL选择合适的数据类型

[复制链接]

4

主题

9

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2023-2-12 19:09:41 | 显示全部楼层 |阅读模式
在使用MySQL创建数据表时,经常会遇到如何为字段选择合适的数据类型的问题,接下来我们一起分析字符串、数值、日期数据类型的选择。
1、CHAR与VARCHAR

CHAR和VARCHAR类型,都用来存储字符串,但它们被存储和检索的方式不同。它们的最大长度以及是否保留尾部空格也不同。CHAR属于固定长度的字符类型,而VARCHAR属于可变长度的字符类型。
下表将各种字符串值存储到 CHAR(4)和VARCHAR(4) 列后的结果,从而说明了CHAR和VARCHAR之间的区别。并且在查询数据时CHAR列会删除尾部的空格。
CHAR(4)需要存储VARCHAR(4)需要存储
‘‘‘    ’4 bytes‘‘1 byte
‘ab’‘ab  ’4 bytes‘ab’3 bytes
‘abcd’‘abcd’4 bytes‘abcd’5 bytes
‘abcdefgh’‘abcd’4 bytes‘abcd’5 bytes
建议:
在存储定长字符时推荐使用CHAR,在存储列是不定长时字符推荐使用合适长的VARCHAR。
在使用CHAR和VARCHAR时,后面跟的数字为满足需要的最小值。
2、BLOB和TEXT类型

BLOB是一个二进制大对象,TEXT是一个的文本大对象。BLOB和 TEXT分别包括TINYBLOB,BLOB, MEDIUMBLOB,LONGBLOB和TINYTEXT,TEXT, MEDIUMTEXT,LONGTEXT四种不同的类型。它们之间的区别主要是存储文本长度和存储字节个数的不同。
建议:
对于存在TEXT或BLOB列的表,查询数据是应避免查询这些字段;
如果可以的话应该把BLOB或TEXT列分离到单独的表中,以提升数据处理性能。
3、定点类型与浮点类型

定点类型,DECIMAL类型的存储精确的数值数据。当对精确度要求很高时,例如金额数据,应使用定点类型。MySQL DECIMAL以二进制格式存储值。
浮点类型,FLOAT和DOUBLE类型代表近似值数据。FLOAT单精度需要四个字节存储,DOUBLE双精度需要八个字节存储。
4、日期和时间数据类型

MySQL提供常用的日期和时间数据类型有 DATETIMEDATETIMETIMESTAMP,和 YEAR。每个时间类型都有一个有效值范围,以及一个“ 零 ”值。
从下表可以看出每种类型的“ 零 ”值的格式。
数据类型“ 零 ”值
DATE'0000-00-00'
TIME'00:00:00'
DATETIME'0000-00-00 00:00:00'
TIMESTAMP'0000-00-00 00:00:00'
YEAR0000
建议:
根据实际需要选择能够满足需要的最小存储的日期或时间类型。如果只记录“年”,那么用占1个字节来的YEAR类型存储,而不需要用3个字节的DATE类型。这样不仅能节约存储,也能提供表的操作效率。
回复

使用道具 举报

2

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 7 天前 | 显示全部楼层
呵呵,低调,低调!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表