Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

MySQL 数据类型

主要分三类:数值类型、字符串类型、日期时间类型。

数值类型

类型大小有符号范围说明
TINYINT1 byte-128 ~ 127小整数;加 UNSIGNED → 0 ~ 255(如年龄)
SMALLINT2 bytes-32768 ~ 32767
MEDIUMINT3 bytes-8388608 ~ 8388607
INT / INTEGER4 bytes-2147483648 ~ 2147483647最常用
BIGINT8 bytes-2^63 ~ 2^63-1极大整数
FLOAT4 bytes单精度(约 7 位有效数字)不精确
DOUBLE8 bytes双精度(约 15 位有效数字)不精确
DECIMAL(M, D)由 M(精度)、D(标度) 决定精确定点数金额等需精确的场景

字符串类型

类型大小(bytes)说明
CHAR0-255定长,如 CHAR(1) 存性别、CHAR(18) 存身份证
VARCHAR0-65535变长,最常用,如 VARCHAR(10) 存姓名
TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT255 / 65 535 / 16 777 215 / 4 294 967 295文本,容量依次递增
TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB同上二进制数据(BLOB 存字节,TEXT 存文本)

日期时间类型

类型大小格式范围说明
DATE3YYYY-MM-DD1000-01-01 ~ 9999-12-31日期
TIME3HH:MM:SS-838:59:59 ~ 838:59:59时间或持续时间
YEAR1YYYY1901 ~ 2155年份
DATETIME8YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59日期 + 时间
TIMESTAMP4YYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 ~ 2038-01-19 03:14:07时间戳,注意 2038 上限

选型速记

  • 整数:范围小用 TINYINT,常用 INT,超大用 BIGINT;非负加 UNSIGNED。
  • 小数:要精确(金额)用 DECIMAL,普通浮点用 FLOAT / DOUBLE。
  • 字符串:定长用 CHAR,变长用 VARCHAR;长文本 TEXT,二进制 BLOB。
  • 时间:只要日期用 DATE,只要时间用 TIME,两者都要用 DATETIME;TIMESTAMP 只占 4 字节但上限到 2038-01-19。

版本差异:CHAR/VARCHAR 的长度在 MySQL 8 中指字符数(5.7 指字节数)。

最近更新: 2026/10/1 09:32
Contributors: liujw
Prev
SQL 语法与分类
Next
SQL - DDL 数据定义语言