跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
SQL

MySQL 数据类型全面解析与实战选型

MySQL 数据类型涵盖数值、小数、字符串、日期时间及枚举集合等类别。数值类型包含 tinyint 和 bit,需注意无符号选项对范围的影响;小数类型中 float 存在精度损失,decimal 适合高精度场景;字符串类型 char 为定长,varchar 为变长且受编码影响最大长度;日期类型包括 date、datetime 和 timestamp,后者支持自动更新。此外,enum 限制单选,set 支持多选但底层基于位运算,查询时需使用 find_in_set 函数。合理选择数据类型是优化数据库性能的基础。

CryptoLab发布于 2026/3/24更新于 2026/5/77 浏览
MySQL 数据类型全面解析与实战选型

文章配图

在数据库设计中,列的数据类型选择直接影响存储效率、查询性能及数据准确性。MySQL 提供了丰富的数据类型分类,涵盖数值、小数、字符串、日期时间及枚举集合等。下面将结合实际示例,逐一解析各类特性的使用场景与注意事项。

一、数值类型

数值类型主要用于存储整数或位信息。常见的包括 tinyint、bit 等,部分支持 unsigned 选项以扩展正数范围。

1.1 tinyint 类型

tinyint 是最小的整型,默认占用 1 字节。其有符号范围为 -128 到 127,无符号(unsigned)则为 0 到 255。

创建表时定义如下:

CREATE TABLE test_tinyint (
    num TINYINT
);

插入极限值测试:

INSERT INTO test_tinyint VALUES (-128), (127);

若尝试插入超出范围的数值,例如 128,MySQL 会直接拦截并报错。加上 unsigned 属性后,负数将被拒绝,但正数上限提升至 255。

1.2 bit 类型

bit 类型用于存储二进制位数据。M 参数指定位数,默认为 1。该类型在显示时可能呈现为 ASCII 码对应的字符,而非直观的二进制或十进制数值。

示例:

CREATE TABLE test_bit (
    a BIT(8)
);

插入数值 10 时,查询结果可能不显示预期数字,因为系统按 ASCII 码渲染。插入 65 则会显示大写字母 'A'。超出位宽表示的最大值同样会被拦截。

二、小数类型

涉及浮点数和定点数,主要区别在于精度处理方式。

2.1 float 类型

float 是浮点类型,需指定 M(总位数)和 d(小数位数)。例如 FLOAT(4,2) 表示总长 4 位,小数 2 位,范围约为 -99.99 到 99.99。

当插入数据超过指定小数位时,MySQL 会进行四舍五入处理。若四舍五入后仍超出总范围,则插入失败。添加 unsigned 后可限制为非负数。

2.2 decimal 类型

decimal 与 float 类似,但采用定点数存储,精度更高,适合金融等对精度敏感的场景。

对比实验显示,相同参数下 float 可能出现精度丢失,而 decimal 能完全保留原始数据。float 有效精度约 7 位,decimal 最大整数位可达 65 位,小数位最大 30 位。

三、字符串类型

字符串类型分为定长和变长两种,选择时需权衡空间与效率。

3.1 char 类型

char(L) 为定长字符串,L 代表字符数而非字节数。无论实际内容多短,都会占用 L 个字符的空间。单位字符在 utf8 编码下可能对应多个字节,但逻辑长度仍以字符计。

L 最大值为 255。超出范围或内容过长均会被拦截。

3.2 varchar 类型

varchar(L) 为变长字符串,仅存储实际内容及长度标识。总字节数受限于 65535,扣除长度记录开销后,实际可用空间取决于字符集编码。

在 utf8 编码下,一个汉字占 3 字节,因此 L 最大值约为 21844。若设为 21845 可能因长度字段占用额外字节而报错,通常建议预留余量。

3.3 char 和 varchar 的比较

特性charvarchar
长度固定可变
空间浪费(未用也占)节省
效率较高略低
适用场景身份证、手机号等定长数据名字、地址等变长数据

四、日期和时间类型

MySQL 提供三种常用时间类型,存储大小与功能各有侧重。

  1. date:格式 yyyy-mm-dd,占 3 字节。
  2. datetime:格式 yyyy-mm-dd HH:ii:ss,范围 1000-9999,占 8 字节。
  3. timestamp:时间戳,从 1970 年起算,占 4 字节,可自动更新。

timestamp 类型配合 NOW() 函数使用时,无需手动赋值即可获取当前时间,且支持自动更新机制。

五、enum 和 set

这两类类型分别对应枚举和集合概念,常用于状态或标签管理。

enum 类型

enum 限制字段只能取预设值中的一个。输入数字或文本均可,不在列表内的值会被拦截。

set 类型

set 允许从预设值中选择多个。底层通过位运算实现,输入数字代表位掩码而非下标。

例如 hobby 定义为 SET('登山','游泳','篮球','武术'),插入数字 1,2,3,4 并非选中前四项,而是设置第 1 至 4 位为 1,从而匹配所有选项。

5.1 查询 set 中的数据

由于 set 存储的是位掩码,直接使用 = 比较可能导致查询不全。推荐使用 FIND_IN_SET 函数进行精确匹配。

SELECT * FROM table_name WHERE FIND_IN_SET('登山', hobby);

合理选择数据类型不仅能减少存储空间,还能提升索引效率与查询速度。在实际开发中,应根据业务需求权衡精度、长度与性能。

目录

  1. 一、数值类型
  2. 1.1 tinyint 类型
  3. 1.2 bit 类型
  4. 二、小数类型
  5. 2.1 float 类型
  6. 2.2 decimal 类型
  7. 三、字符串类型
  8. 3.1 char 类型
  9. 3.2 varchar 类型
  10. 3.3 char 和 varchar 的比较
  11. 四、日期和时间类型
  12. 五、enum 和 set
  13. enum 类型
  14. set 类型
  15. 5.1 查询 set 中的数据
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ToDesk 推出 ToClaw:AI Agent 融入日常工作流
  • Stable Diffusion v1.5 Archive 与 SDXL-Lightning 生成速度与质量对比
  • PCL 点云处理算法与功能索引(C++ 版)
  • Pi0 机器人 VLA 大模型昇腾 A2 平台测评
  • 清华智谱发布 AutoGLM 技术报告:AI 自主操作手机与网页
  • 本地部署多模态大模型:结合 Ollama、Open-WebUI 与 Dify 实现智能对话
  • 深入 XGBoost:机器学习核心与实战指南
  • Django REST Framework 企业级 API 架构实战
  • 大语言模型导论:核心概念与系统学习路径解析
  • 智能家居 AI 开发指南:树莓派与云端 GPU 混合方案
  • FPGA 电源系统设计及器件选型指南
  • 前端 Canvas 基础绘制与动画交互实现
  • Github 2FA 认证失效解决方案及账号恢复指南
  • 复杂 SQL 性能突围:代价驱动的连接条件下推策略与工程实践
  • Java 性能监控工具:jcmd 命令详解
  • 使用 LLaMA-Factory 训练 LLM 大模型并用 Ollama 调用
  • Web 安全 Shell 注入与成绩查询漏洞解析
  • Dify 工作流发布为 MCP Server 实战指南
  • DeepSeek 系列模型版本演进与核心特性对比
  • Git 基础:认识三大区域与文件修改提交流程

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online