数据类型是一个属性,它指定创建表时将存储在每个列中的数据类型。数据类型是 MySQL 理解每个列中所需的数据类型的指南,它还标识 MySQL 将如何与存储的数据

在MySQL中,数据类型主要可以分为三类:

  • 字符串数据类型
  • 数字数据类型
  • 日期和时间数据类型

字符串数据类型

数据类型描述
CHAR(size)固定长度字符串,可以包含字母、数字和特殊字符人物。 size 参数指定列长度以字符为单位。它可以是从 0 到 255。默认值为 1。
VARCHAR(size)可以包含字母、数字和特殊字符的 VARIABLE 长度字符串人物。 size 参数指定最大列长度以字符为单位。它可以是从 0 到 65535。
BINARY(size)等于 CHAR(),但存储二进制字节字符串。 size 参数指定列长度以字节为单位。默认值为 1。
VARBINARY(size)等于 VARCHAR(),但存储二进制字节字符串。 size 参数指定最大列长度以字节为单位。
TINYTEXT(size)保存最大长度的字符串255 个字符。
TEXT(size)保存最大长度为 65,535 字节的字符串。
MEDIUMTEXT(size)保存最大长度为 16,777,215 个字符的字符串。
LONGTEXT(size)保存最大长度为 4,294,967,295 个字符的字符串。
ENUM(val1, val2, val3, ...)一个字符串对象,可以只有一个值,从可能值列表中选择。 ENUM 列表中最多可以列出 65535 个值。如果插入的值不在列表中,则将插入空白值。这些值按照输入的顺序排序。
SET(val1, val2, val3, ...)一个字符串对象,可以有0 个或多个值,从可能值列表中选择。 SET 列表中最多可以列出 64 个值。
TINYBLOB用于 BLOB二进制大型对象。最大长度:255 字节。
BLOB(size)用于 BLOB二进制大型对象。最多可容纳 65,535 字节的数据。
MEDIUMBLOB用于 BLOB二进制大型对象。最多可容纳 16,777,215 字节的数据。
LONGBLOB用于 BLOB二进制大型对象。最多可容纳 4,294,967,295 字节的数据。

数字数据类型

数据类型描述
BOOL零被视为 false,非零值被视为true。
BOOLEAN等于 BOOL
BIT(size)位值类型。每个值的位数在 size 中指定。 size参数可以容纳1到64之间的值。默认值为1。
TINYINT(size)一个非常小整数。有符号范围是从-128到127。无符号范围是从0到255。size参数指定最大显示宽度即255
SMALLINT(size)一个小整数。有符号范围是从-32768到32767。无符号范围是从0到65535。size参数指定最大显示宽度即255
MEDIUMINT(size)中等整数。有符号范围是从-8388608到8388607。无符号范围是从0到16777215。size参数指定最大显示宽度即255
INT(size)整数值。有符号范围是从-2147483648到2147483647。无符号范围是从0到4294967295。size参数指定最大显示宽度即255
INTEGER(size)等于 INT(size)
BIGINT(size)一个大整数。有符号范围是从 -9223372036854775808 到 9223372036854775807。无符号范围是从 0 到 18446744073709551615。size 参数指定最大显示宽度即 255
FLOAT(size, d)浮点数。总位数在 size 中指定。小数点后的位数在d参数中指定。它在 MySQL 8.0.17 中已弃用,并且将在以后的版本中删除。
FLOAT(p)浮点数。 MySQL 使用 p 值来确定结果数据类型是使用 FLOAT 还是 DOUBLE。如果p是从0到24,则数据类型变为FLOAT()。如果p是从25到53,则数据类型变为DOUBLE()。
DOUBLE(size, d)正常大小的浮点数。总位数在 size 中指定。小数点后的位数在d参数中指定
DOUBLE PRECISION(size, d)同义词对于 DOUBLE。
REAL(size, d)DOUBLE 的同义词。
DECIMAL( size, d)精确的定点数。总位数在 size 中指定。小数点后的位数在d参数中指定。 size 的最大数量为 65。d 的最大数量为 30。size 的默认值为 10。d 为 0。
DEC(size, d)等于 DECIMAL(size, d)
NUMERIC(size, d)等于 DECIMAL(size, d)
FIXED(size, d)等于 DECIMAL(size, d)

注意:所有数字数据类型都可能有一个额外的选项:UNSIGNED 或ZEROFILL。如果添加了UNSIGNED 选项,MySQL 允许该列使用负值。如果添加ZEROFILL 选项,MySQL 还会自动向列添加UNSIGNED 属性。

日期和时间数据类型

数据类型描述
DATE日期。格式:年-月-日。支持的范围是从"1000-01-01"到"9999-12-31"。
DATETIME(fsp)日期和时间组合。格式:YYYY-MM-DD hh:mm:ss。支持的范围是从"1000-01-01 00:00:00"到"9999-12-31 23:59:59"。在列定义中添加 DEFAULT 和 ON UPDATE,以自动初始化并更新到当前日期和时间。
TIMESTAMP(fsp)时间戳。 TIMESTAMP 值存储为自 Unix 纪元 ('1970-01-01 00:00:00' UTC) 以来的秒数。格式:YYYY-MM-DD hh:mm:ss。支持的范围是从"1970-01-01 00:00:01"UTC 到"2038-01-09 03:14:07"UTC。可以在列定义中使用 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 指定自动初始化和更新到当前日期和时间。
TIME(fsp)一次。格式:时:分:秒。支持的范围是从"-838:59:59"到"838:59:59"。
YEAR四位数的年份格式。允许的四位数格式的值:1901 到 2155 和 0000。
从 MySQL 8.0 开始,不支持两位数格式的年份。