数据类型选择原则

1. 精确性原则:始终使用最精确的数据类型来存储数据

2. 性能优化:正确的数据类型能提高查询效率并减少存储空间

3. 避免通用字符串类型:虽然字符串类型通用,但不适合所有场景

 

各类型选择指南

 

数值类型

整数:使用整数类型(INT, SMALLINT等)

   无符号数:添加UNSIGNED关键字

   根据范围选择:TINYINT(0-255)、SMALLINT(0-65535)等

小数:

   精确计算(如货币):使用DECIMAL(M,D)

   近似值:使用FLOAT或DOUBLE

电话号码/身份证号:虽然包含数字,但应使用字符串类型(VARCHAR)以避免丢失前导零

 

日期时间类型

仅年份:YEAR

仅时间:TIME

日期+时间:

   一般范围:DATETIME

   自动更新/较小范围:TIMESTAMP

可选时间部分:使用DATE+TIME(NULL)组合

 

字符串类型

短字符串(<256字符):CHAR、VARCHAR或TINYTEXT

长文本:VARCHAR或TEXT类型

固定集合值:考虑ENUM或SET

ENUM:单值选择(如性别)

SET:多值选择(如兴趣爱好)

 

CHAR vs VARCHAR

特性CHARVARCHAR
长度固定可变
尾部空格自动删除保留
性能更快稍慢
存储效率可能浪费空间更节省空间
存储引擎MyISAM推荐InnoDB推荐

      

二进制类型

BLOB:存储二进制数据(图片、音频等)

TEXT:存储纯文本

 根据大小选择:TINYBLOB(255B)、BLOB(65KB)、MEDIUMBLOB(16MB)、LONGBLOB(4GB)

 

重要注意事项

1. 数值与字符串排序差异:数字2<11,但字符串'2'>'11'

2. 强制类型转换问题:避免让MySQL将字符串当作数字处理,会导致:

    性能下降(需要逐行转换)

    无法使用索引

3. 扩展性考虑:如果不确定范围,可以先选择较大类型,后续用ALTER TABLE调整

4. 存储引擎影响:

    MyISAM:固定长度(CHAR)性能更好

    InnoDB:可变长度(VARCHAR)更节省空间

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)