数据类型是一个属性,它指定创建表时将存储在每个列中的数据类型。数据类型是 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 开始,不支持两位数格式的年份。 |