MySQL 支持多种数据类型,这些数据类型定义了存储在数据库中的数据的种类。以下是 MySQL 中常见的数据类型分类及其示例:
数值类型
整数类型
TINYINT
:非常小的整数,带符号的范围是 -128 到 127,无符号的范围是 0 到 255。SMALLINT
:小的整数,带符号的范围是 -32,768 到 32,767,无符号的范围是 0 到 65,535。MEDIUMINT
:中等大小的整数,带符号的范围是 -8,388,608 到 8,388,607,无符号的范围是 0 到 16,777,215。INT
或INTEGER
:标准的整数,带符号的范围是 -2,147,483,648 到 2,147,483,647,无符号的范围是 0 到 4,294,967,295。
BIGINT
:大整数,带符号的范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,无符号的范围是 0 到 18,446,744,073,709,551,615。
这些整数类型可以指定显示宽度(例如 INT(5)
),但这通常只影响显示,不影响存储大小或值的范围。
浮点数和定点数
FLOAT
:单精度浮点数。DOUBLE
:双精度浮点数。DECIMAL(M,N)
或NUMERIC(M,N)
:精确的小数值,其中 M 是数字的最大位数(精度),N 是小数点后的位数(标度)。
日期和时间类型
DATE
:日期,格式为 'YYYY-MM-DD'。TIME
:时间,格式为 'HH:MM:SS'。DATETIME
:日期和时间组合,格式为 'YYYY-MM-DD HH:MM:SS'。TIMESTAMP
:时间戳,格式为 'YYYY-MM-DD HH:MM:SS',可以自动更新,并且与时区相关。YEAR
:年份,可以是 2 位或 4 位数字。
字符串类型
定长字符串
CHAR(M)
:定长字符串,最大长度为 M 字符。如果存储的字符串长度小于 M,MySQL 会用空格填充到 M 字符长度。
变长字符串
VARCHAR(M)
:变长字符串,最大长度为 M 字符。存储时只使用必要的空间(加上 1 或 2 个字节来记录长度)。TINYTEXT
:最大长度为 255 字节的字符串。
TEXT
:最大长度为 65,535 字节的字符串。MEDIUMTEXT
:最大长度为 16,777,215 字节的字符串。LONGTEXT
:最大长度为 4,294,967,295 字节的字符串。
二进制字符串
BINARY(M)
:定长二进制字符串,最大长度为 M 字节。VARBINARY(M)
:变长二进制字符串,最大长度为 M 字节。TINYBLOB
:最大长度为 255 字节的 BLOB。BLOB
:最大长度为 65,535 字节的 BLOB。MEDIUMBLOB
:最大长度为 16,777,215 字节的 BLOB。LONGBLOB
:最大长度为 4,294,967,295 字节的 BLOB。
空间类型
GEOMETRY
:空间数据类型。POINT
:点。LINESTRING
:线。POLYGON
:多边形。- 以及其他几种空间数据类型,如
MULTIPOINT
、MULTILINESTRING
、MULTIPOLYGON
等。
枚举和集合类型
ENUM('value1','value2',...)
:枚举类型,值必须是预定义列表中的一个。SET('value1','value2',...)
:集合类型,可以包含零个或多个预定义列表中的值。
JSON 类型
JSON
:存储 JSON 格式