欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > MySQL 数据类型介绍

MySQL 数据类型介绍

2025/6/14 12:41:49 来源:https://blog.csdn.net/vbhfdghff/article/details/148626236  浏览:    关键词:MySQL 数据类型介绍

概述

  • MySQL 是一个广泛使用的关系型数据库管理系统,它支持多种数据类型,
  • 可分为三大类:数值类型日期和时间类型字符串类型
  • 另外还有一些特殊类型(如 JSON、空间数据类型等)。下面我将详细介绍这些类型及其特点。
  • 资料已经分类整理好:https://pan.quark.cn/s/f52968c518d3

一、数值类型

数值类型用于存储数字,可分为整数类型和浮点类型。

1. 整数类型
  • TINYINT:1字节,范围为 -128127(有符号)或 0255(无符号)。
  • SMALLINT:2字节,范围为 -32,76832,767(有符号)或 065,535(无符号)。
  • MEDIUMINT:3字节,范围为 -8,388,6088,388,607(有符号)或 016,777,215(无符号)。
  • INT/INTEGER:4字节,范围为 -2,147,483,6482,147,483,647(有符号)或 04,294,967,295(无符号)。
  • BIGINT:8字节,范围为 -9,223,372,036,854,775,8089,223,372,036,854,775,807(有符号)或 018,446,744,073,709,551,615(无符号)。

特点

  • 无符号类型(UNSIGNED)只能存储非负数,范围更大。
  • 可指定显示宽度(如 INT(5)),但不影响存储范围,仅用于格式化输出。
2. 浮点类型
  • FLOAT:4字节,单精度浮点数,精度约为 7 位小数。
  • DOUBLE:8字节,双精度浮点数,精度约为 15 位小数。
  • DECIMAL/NUMERIC:用于存储精确的小数值,如 DECIMAL(10,2) 表示总共 10 位数字,其中小数部分占 2 位。

特点

  • FLOATDOUBLE 适用于近似值计算,可能存在精度损失。
  • DECIMAL 适用于财务计算(如金额),确保精确性,但性能略低于浮点类型。

二、日期和时间类型

用于存储日期和时间值。

1. 常用类型
  • DATE:格式为 YYYY-MM-DD,范围从 1000-01-019999-12-31
  • TIME:格式为 HH:MM:SS,范围从 -838:59:59838:59:59(支持负数表示时间间隔)。
  • DATETIME:格式为 YYYY-MM-DD HH:MM:SS,范围从 1000-01-01 00:00:009999-12-31 23:59:59
  • TIMESTAMP:格式同 DATETIME,但范围更小(1970-01-01 00:00:01 UTC2038-01-19 03:14:07 UTC),且会自动转换为服务器时区。
  • YEAR:格式为 YYYYYY(如 202323),范围从 19012155

特点

  • TIMESTAMP 占用 4 字节(比 DATETIME 的 8 字节更节省空间),且支持自动更新(如 ON UPDATE CURRENT_TIMESTAMP)。
  • DATETIME 存储的是实际值,与时区无关。

三、字符串类型

用于存储文本或二进制数据。

1. 固定长度字符串
  • CHAR(N):固定长度字符串,N 为字符数(1 ≤ N ≤ 255)。
  • BINARY(N):固定长度二进制字符串,N 为字节数。

特点

  • CHAR 会自动填充空格以达到指定长度,检索时去除尾部空格。
  • BINARY 用于存储二进制数据(如图片、文件)。
2. 可变长度字符串
  • VARCHAR(N):可变长度字符串,N 为最大字符数(1 ≤ N ≤ 65,535)。
  • VARBINARY(N):可变长度二进制字符串。

特点

  • VARCHAR 仅存储实际长度,更节省空间,但检索效率略低于 CHAR
3. 大文本和二进制类型
  • TEXT:存储大文本,最大长度为 65,535 字节(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT 分别支持不同长度)。
  • BLOB:存储二进制大对象,最大长度为 65,535 字节(TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB 分别支持不同长度)。

特点

  • TEXTBLOB 不支持默认值。
  • 避免在 WHERE 条件中使用 TEXT/BLOB 字段,可能影响性能。
4. 枚举和集合类型
  • ENUM(‘value1’,‘value2’,…):从预定义列表中选择单个值,最多 65,535 个选项。
  • SET(‘value1’,‘value2’,…):从预定义列表中选择 0 个或多个值,最多 64 个选项。

特点

  • ENUMSET 存储为整数,节省空间且查询效率高。

四、特殊类型

1. JSON
  • JSON:存储 JSON 格式数据(如 {"name":"John","age":30})。
  • 特点:支持 JSON 函数(如 JSON_EXTRACT),但性能略低于传统列。
2. 空间数据类型
  • GEOMETRY:存储任意几何对象(点、线、多边形等)。
  • POINTLINESTRINGPOLYGON:存储特定类型的几何对象。
  • 特点:用于地理信息系统(GIS),需配合空间索引(如 SPATIAL)。
3. 其他类型
  • BOOLEAN/TINYINT(1):MySQL 中没有真正的 BOOLEAN,通常用 TINYINT(1) 代替,0 表示 FALSE,非 0 表示 TRUE
  • BIT(N):存储位值,N 为位数(1 ≤ N ≤ 64)。

五、选择建议

  • 整数:根据数值范围选择合适的类型(如 TINYINT 用于状态码,INT 用于用户 ID)。
  • 小数:财务计算用 DECIMAL,其他场景用 FLOAT/DOUBLE
  • 日期时间TIMESTAMP 用于需要自动更新的场景,DATETIME 用于固定时间。
  • 字符串:固定长度用 CHAR,可变长度用 VARCHAR,大文本用 TEXT

通过合理选择数据类型,可以优化存储效率和查询性能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词