MySQL 5.7 支持多种字段类型,以下是主要分类及详细解释:
一、数值类型 (Numeric Types)
1. 整数类型
类型 |
字节 |
有符号范围 |
无符号范围 |
说明 |
TINYINT |
1 |
-128 ~ 127 |
0 ~ 255 |
极小整数(如状态值) |
SMALLINT |
2 |
-32768 ~ 32767 |
0 ~ 65535 |
小整数 |
MEDIUMINT |
3 |
-8388608 ~ 8388607 |
0 ~ 16777215 |
中等整数 |
INT |
4 |
-2147483648 ~ 2147483647 |
0 ~ 4294967295 |
标准整数 |
BIGINT |
8 |
-2^63 ~ 2^63-1 |
0 ~ 2^64-1 |
大整数 |
2. 浮点数 & 定点数
类型 |
说明 |
示例 |
FLOAT(M,D) |
单精度浮点数,近似值,4字节 |
FLOAT(5,2) 存储 123.45 |
DOUBLE(M,D) |
双精度浮点数,近似值,8字节 |
适合科学计算 |
DECIMAL(M,D) |
精确小数,M为总位数,D为小数位 |
DECIMAL(10,2) 适合金额 |
二、日期和时间类型 (Date and Time Types)
类型 |
格式 |
范围 |
说明 |
DATE |
YYYY-MM-DD |
1000-01-01 ~ 9999-12-31 |
日期(无时间) |
TIME |
HH:MM:SS |
-838:59:59 ~ 838:59:59 |
时间(可含微秒) |
DATETIME |
YYYY-MM-DD HH:MM:SS |
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
日期时间(无时区) |
TIMESTAMP |
Unix时间戳 |
1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |
自动转换时区,4字节存储 |
YEAR |
YYYY |
1901 ~ 2155 |
年份 |
三、字符串类型 (String Types)
1. 文本字符串
类型 |
最大长度 |
说明 |
CHAR(N) |
255字符 |
定长字符串(适合短且固定长度的值) |
VARCHAR(N) |
65535字符 |
变长字符串(节省空间,需1-2字节额外开销) |
TINYTEXT |
255字符 |
短文本 |
TEXT |
65535字符 |
普通长文本(如文章内容) |
MEDIUMTEXT |
16,777,215字符 |
中等长度文本 |
LONGTEXT |
4,294,967,295字符 |
极大文本(如日志文件) |
2. 二进制字符串
类型 |
说明 |
BINARY(N) |
定长二进制数据 |
VARBINARY(N) |
变长二进制数据 |
BLOB |
二进制大对象(如图片) |
TINYBLOB |
小BLOB(255字节) |
MEDIUMBLOB |
中等BLOB(16MB) |
LONGBLOB |
极大BLOB(4GB) |
四、其他类型
类型 |
说明 |
示例 |
ENUM |
枚举类型(只能选列表中的一个值) |
ENUM('Red', 'Green') |
SET |
集合类型(可选多个值,用逗号分隔) |
SET('A', 'B', 'C') |
BIT(M) |
位字段类型(M表示位数,1~64) |
BIT(8) 存储二进制值 |
JSON |
JSON格式数据(MySQL 5.7.8+ 支持) |
存储结构化数据 |
五、空间类型 (Spatial Types)
用于地理数据,如点、线、多边形等:
-
GEOMETRY
-
POINT
-
LINESTRING
-
POLYGON
-
MULTIPOINT
-
等(需配合空间函数使用)。
空间数据类型概述
GEOMETRY: 这是一个通用的数据类型,可以存储任何类型的几何对象。
POINT: 表示一个单一的位置,由X坐标和Y坐标(即经度和纬度)定义。例如,POINT(10 20)表示一个位于经度10、纬度20的点。
LINESTRING: 是一系列点组成的线段集合。它可以是简单的线段或复杂的多段线。例如,LINESTRING(0