Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

    • MySQL的权限控制
    • 精细权限管制示例
    • localhost和127.0.0.1的区别-MySQL
    • mysql数据类型
    • 当前读和快照读
    • MySQL中MVCC的实现原理
    • MySQL中MVCC具体用了多少个隐藏字段
    • 锁和事务的关系
    • FOR UPDATE锁类型
  • Redis

  • 分布式

  • Zookeeper

  • Dubbo

  • Kafka

  • 数据结构

  • 算法

  • OJ

  • 从道家哲学看计算机?
  • 后端
  • MySQL
plantre
2025-05-08

mysql数据类型

MySQL 数据库支持丰富的数据类型,以下是其核心数据类型的全面归纳,涵盖存储范围、用途及关键特性:


一、数值类型

  1. 整数类型
    • TINYINT:1字节,范围:有符号(-128~127),无符号(0~255),适用于年龄、状态码等小范围数值。

    • SMALLINT:2字节,范围:有符号(-32768~32767),无符号(0~65535),适用于省份编号等中等范围数值。

    • MEDIUMINT:3字节,范围:有符号(-8,388,608~8,388,607),无符号(0~16,777,215),适用于订单流水号等。

    • INT/INTEGER:4字节,范围:有符号(-2,147,483,648~2,147,483,647),无符号(0~4,294,967,295),最常用的整数类型。

    • BIGINT:8字节,范围:有符号(-9,223,372,036,854,775,808~9,223,372,036,854,775,807),无符号(0~18446744073709551615),适用于大型ID或计数器。

  2. 浮点数与定点数
    • FLOAT:单精度浮点型,4字节,近似值存储,适用于科学计算等非精确场景。

    • DOUBLE:双精度浮点型,8字节,精度更高,但仍有精度损失。

    • DECIMAL:定点数类型,精确存储小数,格式为DECIMAL(M,D),如金融金额等需高精度计算的场景。

  3. 位与布尔类型
    • BIT(M):存储位数据,M范围1~64,如开关状态。

    • BOOL/BOOLEAN:等价于TINYINT(1),0表示FALSE,非0表示TRUE。


二、日期与时间类型

  1. DATE:存储日期,格式YYYY-MM-DD,范围1000-01-01至9999-12-31。
  2. TIME:存储时间,格式HH:MM:SS,范围-838:59:59至838:59:59。
  3. DATETIME:日期时间组合,格式YYYY-MM-DD HH:MM:SS,范围1000-01-01 00:00:00至9999-12-31 23:59:59。
  4. TIMESTAMP:时间戳,范围1970-01-01 00:00:01 UTC至2038-01-19 03:14:07 UTC,支持自动更新(如插入或修改时自动填充当前时间)。
  5. YEAR:存储年份,支持2位或4位格式(1901~2155)。

三、字符串与文本类型

  1. 定长与变长字符串
    • CHAR(M):定长字符串,最多255字符,适合存储固定长度数据(如MD5哈希)。

    • VARCHAR(M):变长字符串,最多65535字节(实际字符数受编码影响),适合存储可变长度数据(如用户名)。

  2. 文本类型
    • TINYTEXT:最大255字符,适用于短文。

    • TEXT:最大65,535字符,适用于文章内容。

    • MEDIUMTEXT:最大16,777,215字符,适用于长文本。

    • LONGTEXT:最大4,294,967,295字符,适用于超长文本(如日志)。

  3. 二进制字符串
    • BINARY(M):定长二进制数据,类似CHAR。

    • VARBINARY(M):变长二进制数据,类似VARCHAR。

    • BLOB系列:包括TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB,存储二进制文件(如图片、视频)。


四、枚举与集合类型

  1. ENUM:单选枚举类型,如性别字段ENUM('male', 'female'),存储时实际为整数索引。
  2. SET:多选集合类型,如兴趣爱好SET('sports', 'music'),允许选择多个值(最多64个选项)。

五、其他特殊类型

  1. JSON:存储JSON格式数据,支持JSON路径查询与函数操作。
  2. 空间数据类型:如GEOMETRY、POINT、POLYGON等,用于地理信息系统(GIS)。
  3. UUID:存储128位唯一标识符(需通过函数生成)。

六、属性与约束 • UNSIGNED:数值类型无符号化,扩大正数范围。

• AUTO_INCREMENT:自增属性,常用于主键。

• DEFAULT:设置默认值。

• NOT NULL:禁止NULL值。


七、选型建议

  1. 性能与存储平衡:优先选择最小适用类型(如用TINYINT代替INT存储状态码)。
  2. 精确性要求:金融数据用DECIMAL,避免浮点数精度损失。
  3. 空间优化:定长字段(CHAR/BINARY)查询更快,变长字段(VARCHAR/TEXT)节省空间。
  4. 时间类型选择:需时区支持时用TIMESTAMP,否则用DATETIME。

如需完整示例或特定场景的详细对比,可参考MySQL官方文档 (opens new window)或上述搜索结果。

编辑 (opens new window)
上次更新: 2025/06/13, 00:51:28
localhost和127.0.0.1的区别-MySQL
当前读和快照读

← localhost和127.0.0.1的区别-MySQL 当前读和快照读→

最近更新
01
集成loki
07-04
02
TCP的ESTABLISHED是什么意思
06-24
03
安装1panel
06-24
更多文章>
Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式