【技术专题】Mysql8 数据库 - Mysql8 数据类型简介

大家好,我是Java1234_小锋老师,最近更新 《一天学会 Mysql8 视频教程(无废话版) 》专辑,感谢大家支持。

本课程主要介绍和讲解 Mysql8简介,安装以及配置,客户端sqlyog 安装以及配置,数据库基本操作,数据库表基本操作,查询数据,添加,修改,删除数据,索引,视图,触发器,常用函数,存储过程和函数。

视频教程+课件+源码打包下载:

链接:https://pan.baidu.com/s/1o-zRfndo1HHrS_uFroOiCw?pwd=1234

提取码:1234

Mysql8(在第一阶段目录里)

Mysql8 数据类型简介

MySQL 8 的数据类型大致分为:数值、日期时间、字符串/二进制、JSON、空间、其他。选型时重点关注:精度、存储空间、是否受时区影响、是否可索引。

1. 数值类型

类型 说明
TINYINT 1 字节,-128~127;UNSIGNED 0~255
SMALLINT 2 字节,-32768~32767
MEDIUMINT 3 字节
INT / INTEGER 4 字节,常用整数
BIGINT 8 字节,大整数,常用作自增主键
DECIMAL(M,D) / NUMERIC 定点数,精确,适合金额。M 最大 65,D 最大 30
FLOAT 4 字节,近似浮点
DOUBLE 8 字节,近似浮点
BIT(M) 位类型,M 为 1~64
BOOL / BOOLEAN 是 TINYINT(1) 的同义词,0/1

注意:MySQL 8.0.17 起,整数的显示宽度如 INT(11) 和 ZEROFILL 已弃用,不建议依赖。

2. 日期时间类型

类型 说明
DATE 日期,YYYY-MM-DD,范围 1000-01-01 ~ 9999-12-31
TIME 时间,HH:MM:SS,范围 -838:59:59 ~ 838:59:59
DATETIME 日期时间,范围 1000 ~ 9999,与时区无关
TIMESTAMP 时间戳,按 UTC 存储,受时区影响,范围到 2038-01-19
YEAR 年份,通常 1901~2155 和 0000

TIME、DATETIME、TIMESTAMP 支持小数秒,如 DATETIME(6),精度 0~6。

3. 字符串与二进制类型

类型 说明
CHAR(M) 定长字符串,M 为字符数,0~255
VARCHAR(M) 变长字符串,M 为字符数,最大 65535 字节,受字符集和行大小限制
BINARY(M) / VARBINARY(M) 定长/变长二进制串,M 为字节数
TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT 文本大对象,最大约 255B / 64KB / 16MB / 4GB
TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB 二进制大对象,大小同上
ENUM 枚举,只能取一个值
SET 集合,可取多个值
JSON 二进制存储的 JSON,自动校验,支持 JSON 函数和多值索引

MySQL 8 默认字符集是 utf8mb4,默认排序规则通常是 utf8mb4_0900_ai_ci。utf8 在 MySQL 8 中是 utf8mb3 的别名,建议使用 utf8mb4。

4. 空间类型

MySQL 8 支持 GIS 空间数据类型:

  • GEOMETRY
  • POINT
  • LINESTRING
  • POLYGON
  • MULTIPOINT
  • MULTILINESTRING
  • MULTIPOLYGON
  • GEOMETRYCOLLECTION

支持 SRID 属性,InnoDB 支持空间索引。

5. 其他重要特性

  • AUTO_INCREMENT:自增,通常用于整数主键。
  • UNSIGNED:无符号,扩大正数范围。
  • DEFAULT:默认值;MySQL 8.0.13+ 支持表达式默认值。
  • 生成列:VIRTUAL / STORED,可基于其他列计算。
  • 不可见列:INVISIBLE。
  • CHECK 约束:MySQL 8.0.16+ 正式支持。
  • BLOB、TEXT、JSON 等类型在 8.0.13+ 可用表达式方式设置默认值。

6. 选型建议

  • 金额:用 DECIMAL,不要用 FLOAT/DOUBLE。
  • 主键:常用 BIGINT UNSIGNED AUTO_INCREMENT。
  • 时间:需要时区转换用 TIMESTAMP;范围大且不想受时区影响用 DATETIME。
  • 普通字符串:VARCHAR;定长短字符串:CHAR。
  • 长文本:TEXT;二进制文件:BLOB。
  • 半结构化数据:JSON,但经常查询的字段建议抽成普通列或生成列并加索引。
  • 布尔值:可用 TINYINT(1) 或 BOOL。
  • 枚举:ENUM/SET 简单但修改麻烦,复杂场景可用 TINYINT + 字典表。

总体原则:精确优先、够用就好、能索引的字段尽量用普通类型,谨慎使用大对象和 JSON。

相关推荐
AllData公司负责人7 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
xixingzhe27 小时前
数据库备份的分类与特点
数据库
时间的拾荒人11 小时前
Redis 主从复制详解:配置实操 + 原理机制
数据库·redis·面试
隔窗听雨眠11 小时前
MySQL三表JOIN执行内核与优化器决策机制
数据库·mysql·sql优化
Decay__12 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
笃行35014 小时前
【金仓数据库产品体验官】订单增量同步实战:MERGE、OUTPUT 与 IDENTITY 的兼容验证
数据库
星恒随风17 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下18 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck19 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人20 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析