本系列可作为数据库学习系列的笔记文中提到的一些练习的代码小编会将代码复制下来大家复制下来就可以练习了方便大家学习。点赞关注不迷路您的点赞、关注和收藏是对小编最大的支持和鼓励系列文章目录JAVA初阶---------已更完JAVA数据结构---------已更完数据库---Day 1 数据库基础数据库---Day2 数据库操作数据库---Day3 数据类型目录目录系列文章目录目录前言一、为什么必须学数据类型二、数值类型最常用、最容易溢出2.1 整数类型完整列表含大小、范围、用途特别说明2.2 小数类型浮点 vs 定点2.2.1 FLOAT单精度2.2.2 DOUBLE双精度2.2.3 DECIMAL (M,D)高精度定点数开发铁律必背三、字符串类型最复杂、面试最多3.1 字符串类型完整清单3.2 CHAR 与 VARCHAR 深度对比面试高频3.2.1 CHAR (M) 固定长度3.2.2 VARCHAR (M) 可变长度3.2.3 经典示例文档原版3.3 VARCHAR 与 TEXT 深度区别开发必懂3.4 ENUM 与 SET极高效、极省空间3.4.1 ENUM 枚举单选3.4.2 SET 集合多选四、二进制类型存文件、字节流五、日期与时间类型自动维护、时区、自动更新5.1 日期类型完整清单关键参数fsp 小数秒精度常用系统时间函数5.2 DATETIME 与 TIMESTAMP 核心区别DATETIMETIMESTAMP开发最佳实践六、字符串排序规则与字符集文档重点七、最全开发选型指南直接照着用7.1 数值类型怎么选7.2 字符串怎么选7.3 日期怎么选八、全文总结极简版前言小编作为新晋码农一枚会定期整理一些写的比较好的代码作为自己的学习笔记会试着做一下批注和补充如转载或者参考他人文献会标明出处非商用如有侵权会删改欢迎大家斧正和讨论在 MySQL 建表时字段数据类型是决定表性能、存储空间、数据准确性与后期扩展性的核心。选得不对轻则数据溢出、精度丢失重则索引失效、查询缓慢、重构困难。一、为什么必须学数据类型在面向对象开发里类 → 数据库表类属性 → 表字段对象实例 → 表行数据要给字段存值就必须先规定它能存什么、占多大空间、怎么存储。这就是数据类型。MySQL 常用数据类型分为四大类数值类型字符串类型二进制类型日期与时间类型二、数值类型最常用、最容易溢出数值类型分为整数、浮点数、定点数、位类型、布尔型。2.1 整数类型完整列表含大小、范围、用途类型占用字节有符号范围无符号UNSIGNED范围典型业务场景BIT(M)1~64 位——位存储、开关TINYINT1-128 ~ 1270 ~ 255状态、性别、是否删除SMALLINT2-32768 ~ 327670 ~ 65535类型、小枚举MEDIUMINT3-8388608 ~ 83886070 ~ 16777215较大计数INT / INTEGER4-2147483648 ~ 21474836470 ~ 4294967295用户 ID、订单 ID、通用数字BIGINT8-2⁶³ ~ 2⁶³-10 ~ 2⁶⁴-1分布式 ID、超大金额、日志 ID特别说明BOOL / BOOLEAN本质就是TINYINT(1)0 → false非 0 → trueBIT(M)M 表示位数1~64省略 M 则默认 1 位。适合存极省空间的布尔位。2.2 小数类型浮点 vs 定点2.2.1 FLOAT单精度占用4 字节精度约7 位有效数字语法FLOAT(M,D)M 总位数D 小数位数2.2.2 DOUBLE双精度占用8 字节精度约15 位有效数字语法DOUBLE(M,D)2.2.3 DECIMAL (M,D)高精度定点数占用动态字节无精度丢失最关键M 最大65D 最大30默认DECIMAL (10,0)开发铁律必背金额、价格、财务、交易 → 必须用 DECIMAL禁止用 FLOAT/DOUBLE 存钱会出现精度丢失三、字符串类型最复杂、面试最多字符串分为定长字符串CHAR变长字符串VARCHAR文本类型TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT二进制字符串BINARY / VARBINARY / BLOB 系列枚举ENUM集合SET3.1 字符串类型完整清单类型说明最大长度CHAR(M)固定长度字符255 字符VARCHAR(M)可变长度字符65535 字节TINYTEXT极小文本255 字节TEXT普通文本65535 字节64KBMEDIUMTEXT中文本16MBLONGTEXT大文本4GBBINARY(M)固定长度二进制255 字节VARBINARY(M)可变长度二进制65535 字节TINYBLOB小二进制255 字节BLOB二进制64KBMEDIUMBLOB中二进制16MBLONGBLOB大二进制4GBENUM单选枚举65535 个值SET多选集合64 个值3.2 CHAR 与 VARCHAR 深度对比面试高频3.2.1 CHAR (M) 固定长度M字符数0~255不足长度用空格填充查询时自动删除尾部空格速度快、浪费空间适合长度固定的数据例身份证、手机号、学号、邮编、MD5、UUID3.2.2 VARCHAR (M) 可变长度M最大字符数实际用多少存多少用1~2 字节记录真实长度≤255 字节1 字节255 字节2 字节查询时保留尾部空格节省空间、速度略低适合长度不固定的数据例姓名、标题、地址、备注3.2.3 经典示例文档原版CREATE TABLE vc ( v VARCHAR(4), c CHAR(4) ); INSERT INTO vc VALUES (ab , ab );查询SELECT CONCAT((,v,)), CONCAT((,c,)) FROM vc;结果(ab) (ab)原因CHAR 会删掉末尾空格VARCHAR 会截断超长空格并报警告3.3 VARCHAR 与 TEXT 深度区别开发必懂对比项VARCHARTEXT最大长度65535 字节65535 字节超了自动升级存储方式768 字节存行内否则溢出全部存在溢出页索引可以建普通索引不能直接建普通索引只能全文索引查询性能高低适用场景需要检索、短内容大内容、不常检索开发原则能 VARCHAR 绝对不用 TEXT3.4 ENUM 与 SET极高效、极省空间3.4.1 ENUM 枚举单选从列表中只能选一个内部以整数存储最多 65535 个选项示例gender ENUM(男,女,未知)3.4.2 SET 集合多选从列表中可选多个内部以整数存储最多 64 个选项示例hobby SET(游泳,跑步,游戏,读书)四、二进制类型存文件、字节流二进制类型和字符串对应但存的是字节不是字符。BINARY → 对应 CHARVARBINARY → 对应 VARCHARBLOB 系列 → 对应 TEXT 系列用途图片字节文件流加密字节不适合直接阅读的二进制数据现代开发一般不把文件存在数据库而是存文件路径二进制类型用得越来越少。五、日期与时间类型自动维护、时区、自动更新MySQL 提供 5 种日期时间类型比用字符串存时间更省空间、更容易排序、更安全。5.1 日期类型完整清单类型字节范围格式用途DATE31000-01-01 ~ 9999-12-31YYYY-MM-DD只存日期TIME3-838:59:59 ~ 838:59:59hh:mm:ss只存时间YEAR11901 ~ 2155YYYY只存年份DATETIME81000~9999YYYY-MM-DD hh:mm:ss业务时间TIMESTAMP41970-2038时间戳更新时间、自动维护关键参数fsp 小数秒精度0~6 位默认 0示例DATETIME(3)精确到毫秒示例TIMESTAMP(6)精确到微秒常用系统时间函数NOW()/CURRENT_TIMESTAMP→ 当前日期时间CURDATE()→ 当前日期CURTIME()→ 当前时间5.2 DATETIME 与 TIMESTAMP 核心区别DATETIME范围大1000–9999不受时区影响手动赋值占用 8 字节TIMESTAMP范围小1970–2038受时区影响可设置ON UPDATE CURRENT_TIMESTAMP占用 4 字节开发最佳实践业务时间创建时间、生日、下单时间→ DATETIME更新时间自动刷新→ TIMESTAMP六、字符串排序规则与字符集文档重点字符串以字符为单位可单独指定字符集与排序规则例utf8mb4utf8mb4_0900_ai_ci二进制以字节为单位排序按数字编码例utf8mb4_bin_ci大小写不敏感_cs大小写敏感_bin二进制比较七、最全开发选型指南直接照着用7.1 数值类型怎么选状态 / 是否删除 / 性别 →TINYINT普通 ID / 计数 →INT超大 ID / 分布式 ID →BIGINT金额 / 价格 / 财务 →DECIMAL经纬度 / 科学计算 →DOUBLE7.2 字符串怎么选长度固定 →CHAR长度不固定、需索引 →VARCHAR文章 / 详情 / 不检索 →TEXT单选状态 →ENUM多选标签 →SET7.3 日期怎么选只存日期 →DATE完整业务时间 →DATETIME自动更新时间 →TIMESTAMP只存年份 →YEAR八、全文总结极简版建表先定类型类型决定性能、空间、安全整数选合适大小不要一律 INT钱必须用 DECIMAL固定长度用 CHAR变长用 VARCHAR能 VARCHAR 不用 TEXT日期不要用字符串用 MySQL 原生日期类型ENUM/SET 极快极省空间适合固定选项这一篇就是 MySQL 数据类型最全、最细、最贴近教材、最适合实战的完整版手册不管是学习、面试、建表都够用。总结以上就是今天要讲的内容本文简单记录了数据结构学习内容仅作为一份简单的笔记使用大家根据注释理解您的点赞关注收藏就是对小编最大的鼓励