MySQL 常用数据类型的系统总结

一、数值型(存储数字,含整数、小数、布尔值)

1. 整数类型(INT 系列)

数据类型

字节数

取值范围(有符号)

取值范围(无符号)

核心特性

适用场景

TINYINT

1

-128 ~ 127

0 ~ 255

占用空间最小

状态标记(0/1)、年龄(简化)、评分等级

SMALLINT

2

-32768 ~ 32767

0 ~ 65535

中小型整数

班级人数、序号、金额(分)

MEDIUMINT

3

-8388608 ~ 8388607

0 ~ 16777215

中大型整数

数据量较大的 ID、统计数

INT

4

-2147483648 ~ 2147483647

0 ~ 4294967295

最常用

学生 ID、订单号、成绩、年龄

BIGINT

8

-9e18 ~ 9e18

0 ~ 1.8e19

超大整数

海量数据 ID(如日志 ID)、时间戳(毫秒级)

关键说明

  • 加 UNSIGNED 关键字表示无符号(仅存非负数),如 INT UNSIGNED;
  • 整数类型可指定 ZEROFILL(零填充),如 INT(5) ZEROFILL,不足位数补 0(仅无符号有效)。
2. 小数类型(精确 / 近似小数)

数据类型

字节数

格式说明

核心特性

适用场景

DECIMAL(M,D)

可变

M = 总位数(1~65),D = 小数位数(0~30)

精确小数(无误差)

金额、汇率、分数(如 85.5 分)

FLOAT(M,D)

4

单精度浮点型,M = 总位数,D = 小数位数

近似小数(误差小)

科学计算、非精确统计(如身高、体重)

DOUBLE(M,D)

8

双精度浮点型,精度高于 FLOAT

近似小数(精度高)

工程计算、大数据量浮点存储

示例

  • 金额字段:DECIMAL(10,2)(支持 0.00 ~ 99999999.99);
  • 身高字段:FLOAT(5,1)(支持 0.0 ~ 999.9)。
3. 布尔类型(BOOL/BOOLEAN)
  • 本质是 TINYINT(1) 的别名,仅存 0(假)或 1(真);
  • 示例:is_active BOOLEAN DEFAULT 1(默认启用状态)。

二、字符串型(存储文本、字符,含固定 / 可变长度)

1. 短字符串类型

数据类型

字节数

长度限制

核心特性

适用场景

CHAR(M)

M(1~255)

固定长度(M 为字符数)

存储效率高,查询快

用户名(如 CHAR (20))、手机号(CHAR (11))、性别(CHAR (2))

VARCHAR(M)

可变(1~255)

可变长度(M 为最大字符数)

节省空间

姓名(VARCHAR (20))、地址(VARCHAR (100))、备注(VARCHAR (255))

核心区别

  • CHAR:无论实际存储内容长度,均占用 M 个字符空间(如 CHAR(10) 存 "abc" 仍占 10 字符);
  • VARCHAR:仅占用实际内容长度 + 1~2 字节(记录长度),适合长度不固定的文本。
2. 长文本类型

数据类型

长度限制

核心特性

适用场景

TINYTEXT

0 ~ 255 字符

短文本

简短描述、备注

TEXT

0 ~ 65535 字符

常用长文本

文章内容、详细说明

MEDIUMTEXT

0 ~ 16777215 字符

中长文本

日志数据、大段描述

LONGTEXT

0 ~ 4294967295 字符

超长文本

海量文本(如小说、备份数据)

注意:文本类型不能设置默认值,查询效率低于 CHAR/VARCHAR,不建议用于排序 / 分组(可通过索引优化)。

3. 特殊字符串类型
  • ENUM:枚举类型,只能从指定列表中选一个值,如 gender ENUM('男','女','未知');

适用场景:固定选项(如性别、学历、订单状态),存储效率高(存数字索引)。

  • SET:集合类型,可从指定列表中选多个值(用逗号分隔),如 hobby SET('读书','运动','游戏');

适用场景:多选项(如兴趣爱好),最多支持 64 个选项。

三、日期时间型(存储时间、日期,精确到不同粒度)

数据类型

字节数

取值范围

格式示例

核心特性

适用场景

DATE

3

1000-01-01 ~ 9999-12-31

2025-04-10

仅存日期

生日、注册日期

TIME

3

-838:59:59 ~ 838:59:59

14:30:00

仅存时间

上课时间、打卡时间

DATETIME

8

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

2025-04-10 14:30:00

日期 + 时间(不受时区影响)

订单创建时间、考试时间

TIMESTAMP

4

1970-01-01 00:00:01 ~ 2038-01-19 03:14:07

2025-04-10 14:30:00

日期 + 时间(受时区影响,自动转换)

日志时间、更新时间

YEAR

1

1901 ~ 2155

2025

仅存年份

入学年份、毕业年份

常用函数

  • 获取当前时间:NOW()(返回 DATETIME)、CURDATE()(返回 DATE)、CURTIME()(返回 TIME);
  • 时间戳转换:UNIX_TIMESTAMP()(DATETIME→时间戳)、FROM_UNIXTIME()(时间戳→DATETIME)。

四、二进制型(存储二进制数据,如文件、图片)

数据类型

长度限制

核心特性

适用场景

TINYBLOB

0 ~ 255 字节

短二进制

小图标、缩略图

BLOB

0 ~ 65535 字节

常用二进制

图片、音频片段

MEDIUMBLOB

0 ~ 16777215 字节

中长二进制

视频、大文件

LONGBLOB

0 ~ 4294967295 字节

超长二进制

超大文件(不推荐,建议存文件路径)

注意:二进制类型存储文件会导致数据库体积膨胀,查询效率低,实际开发中更推荐存储文件的服务器路径(如 /upload/2025/04/10/photo.jpg)。

五、空间类型(GIS 相关,存储地理数据)

  • 常用类型:POINT(点,如经纬度)、LINESTRING(线)、POLYGON(面);
  • 适用场景:地图应用(如店铺位置、路线规划),需配合 MySQL 的 GIS 函数使用(如计算距离)。

六、数据类型选择原则

  1. 最小够用原则:优先选择能满足需求的最小类型(如年龄用 TINYINT 而非 INT,手机号用 CHAR (11) 而非 VARCHAR (20));
  2. 精度匹配原则:金额、分数等需精确计算的场景用 DECIMAL,避免 FLOAT/DOUBLE 的精度误差;
  3. 查询效率原则:频繁查询、排序、分组的字段用 CHAR/VARCHAR,避免 TEXT/BLOB;
  4. 时间场景原则:跨时区用 TIMESTAMP,无需时区转换用 DATETIME,仅存日期用 DATE;
  5. 兼容性原则:避免使用 ENUM/SET(修改选项需 ALTER TABLE),可改用关联表存储固定选项。

Read more

微信机器人怎么弄的?微信群里怎么添加机器人,一篇讲清楚

很多人第一次在微信群里看到机器人,都会有类似的疑问: 这是微信自带的吗? 还是要下载什么软件? 普通人能不能自己弄一个? 拉进群之后,它为什么能自动说话? 实际上,微信机器人并不是一个“神秘功能”,而是一套已经相当成熟的使用方案。只不过,大多数教程要么写得太技术化,要么只讲结果不讲过程。 下面我们就按真实使用顺序,一步一步拆开来看。 一、先把概念说清楚:微信机器人到底是什么? 很多人理解中的“微信机器人”,是那种: 会自动回消息 能在群里发言 看起来像一个人 从使用者角度看,这个理解没错。 但从原理上来说,更准确的说法是: 微信机器人 = 一个被系统托管的微信账号 + 自动化 / AI 处理逻辑 它不是安装在你手机里的插件,也不是微信官方自带的功能,而是通过平台接入微信聊天体系的一种服务形态。 像现在比较常见的 知更 AI 微信机器人,本质上都是走这条路。 二、微信机器人怎么弄?先回答最关键的几个问题 1️⃣ 要不要下载软件? 这是被问得最多的问题。 答案是:大多数情况下不需要你单独下载客户端。

打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人

打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人

打造你的家庭 AI 助手(四):单 OpenClaw 配置多 Agent、多 QQ、飞书机器人 引言 OpenClaw 是一个强大的智能体(Agent)编排框架,它通过统一的架构让开发者可以轻松管理多个聊天机器人,并接入不同的即时通讯平台。在实际应用中,我们往往需要同时运行多个 QQ 机器人(例如个人助手、工作助手),甚至希望同一个智能体既能处理 QQ 消息,也能响应飞书消息。 本文将详细介绍如何在一个 OpenClaw 实例中配置多通道(QQ、飞书)、多 Agent 以及多 QQ 机器人账号,实现资源的高效利用和灵活的消息路由。特别地,我们将阐明飞书通道与 QQ 通道在绑定规则上的差异,避免常见的配置错误。 核心概念回顾 * Agent(智能体):拥有独立人格、记忆和技能的对话单元。每个

功能媲美收费在线教育平台!一款完全免费的开源智慧云智能教育平台,支持Web、App、小程序全端使用

功能媲美收费在线教育平台!一款完全免费的开源智慧云智能教育平台,支持Web、App、小程序全端使用

💂 个人网站:IT知识小屋🤟 版权: 本文由【IT学习日记】原创、在ZEEKLOG首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 * 简介 * 架构 * 系统亮点 * 功能列表 * UI界面 * 开源地址&使用手册 * 写在最后 简介 本系统是一款功能全面的开源在线教育系统,支持学生端、管理端、小程序和 App等多终端使用。系统采用前后端分离架构设计,内置课程学习、在线考试、试题管理、错题本、视频课堂、消息中心等核心功能,同时具备用户与权限管理、考试分析、课程管理、日志管理等管理端功能。系统采用SpringBoot、Mybatis-Plus、Shiro、MySQL、Redis等技术栈构建,前端使用Vue与UniApp实现,可支持多端实时同步和高可用、高性能部署。 系统采用模块化设计,

前端Bug修复专家:从现象到根因,再到测试闭环的SOP

引言:Bug 排查的“猜谜游戏” 作为一名前端工程师,你是否经历过这样的场景:测试人员扔过来一个 Bug 描述——“用户点了某个按钮后,页面就卡死了,偶尔复现,请尽快修复”。你打开代码,面对几百行业务逻辑,只能凭感觉加个 try-catch 或 setTimeout,推上去后却被告知“还是不行”。更令人头疼的是,某些问题只在 iOS Safari 上出现,某些问题需要快速连续点击才能复现。 这种“面向猜测编程”的排查方式,往往导致修复方案治标不治本,甚至引入新的 Bug。如何摆脱这种困境?今天,我想向大家介绍一套我从多年实战中总结出的前端缺陷诊断与修复专家技能(可以称之为 bugfix-expert),它不仅帮你“修好代码”,更帮你建立一套“现象 → 根因 → 修复 → 测试”的标准化作业程序(SOP)。 技能概述:不仅仅是修 Bug