MySQL 数据类型
列的数据类型定义了该列可以保存的值:整数、字符、货币、日期和时间、二进制等。
MySQL 数据类型(8.0 版)
数据库表中的每一列都必须有名称和数据类型。
SQL 开发人员必须在创建表时决定将在每列中存储的数据类型。 数据类型是 SQL 了解每列中预期的数据类型的指南,它还标识 SQL 将如何与存储的数据交互。
在 MySQL 中有三种主要的数据类型:字符串、数字、日期和时间。
字符串数据类型
数据类型 | 描述 |
---|---|
CHAR(size) | 一个固定长度的字符串(可以包含字母、数字和特殊字符)。 size 参数指定以字符为单位的列长度 - 可以从 0 到 255。默认为 1 |
VARCHAR(size) | 可变长度字符串(可以包含字母、数字和特殊字符)。 size 参数指定字符的最大列长度 - 可以从 0 到 65535 |
BINARY(size) | 等于 CHAR(),但存储二进制字节字符串。 size 参数以字节为单位指定列长度。默认为 1 |
VARBINARY(size) | 等于 VARCHAR(),但存储二进制字节字符串。 size 参数指定最大列长度(以字节为单位)。 |
TINYBLOB | 对于 BLOB(二进制大对象)。最大长度:255 字节 |
TINYTEXT | 保存一个最大长度为 255 个字符的字符串 |
TEXT(size) | 保存一个最大长度为 65,535 字节的字符串 |
BLOB(size) | 对于 BLOB(二进制大对象)。最多可容纳 65,535 字节的数据 |
MEDIUMTEXT | 保存最大长度为 16,777,215 个字符的字符串 |
MEDIUMBLOB | 对于 BLOB(二进制大对象)。最多可容纳 16,777,215 字节的数据 |
LONGTEXT | 保存最大长度为 4,294,967,295 个字符的字符串 |
LONGBLOB | 对于 BLOB(二进制大对象)。最多可容纳 4,294,967,295 字节的数据 |
ENUM(val1, val2, val3, ...) | 只能有一个值的字符串对象,从可能值列表中选择。您最多可以在一个 ENUM 列表中列出 65535 个值。如果插入的值不在列表中,则将插入一个空白值。 这些值按您输入的顺序排序 |
SET(val1, val2, val3, ...) | 可以有 0 个或多个值的字符串对象,从可能的值列表中选择。一个 SET 列表中最多可以列出 64 个值 |
数值数据类型
数据类型 | 描述 |
---|---|
BIT(size) | 位值类型。每个值的位数在 size 中指定。 size 参数可以保存从 1 到 64 的值。size 的默认值为 1。 |
TINYINT(size) | 一个非常小的整数。有符号范围是-128 到 127。无符号范围是 0 到 255。size 参数指定最大显示宽度(即 255) |
BOOL | 零被认为是false,非零值被认为是true。 |
BOOLEAN | 等同 BOOL |
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 中已弃用,并将在未来的 MySQL 版本中删除 |
FLOAT(p) | 一个浮点数。 MySQL 使用 p 值来确定是使用 FLOAT 还是 DOUBLE 作为结果数据类型。如果 p 是从 0 到 24,则数据类型变为 FLOAT()。如果 p 是从 25 到 53,则数据类型变为 DOUBLE() |
DOUBLE(size, d) | 一个正常大小的浮点数。 size 中指定了总位数。 d参数中指定小数点后的位数 |
双精度(size, d) | |
DECIMAL(size, d) | 一个精确的定点数。 size 中指定了总位数。小数点后的位数在 d 参数中指定。 size 的最大数为 65。d 的最大数为 30。size 的默认值为 10。< em>d 为 0。 |
DEC(size, d) | 等于 DECIMAL(size,d) |
注意:所有数字数据类型都可能有一个额外的选项:UNSIGNED 或 ZEROFILL。如果添加 UNSIGNED 选项,MySQL 不允许该列使用负值。如果添加 ZEROFILL 选项,MySQL 还会自动将 UNSIGNED 属性添加到列中。
日期和时间数据类型
数据类型 | 描述 |
---|---|
DATE | 日期。格式:YYYY-MM-DD。支持的范围是从 '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) | 一次。格式:hh:mm:ss。支持的范围是从 '-838:59:59' 到 '838:59:59' |
YEAR | 四位数格式的年份。允许采用四位数格式的值:1901 到 2155 和 0000。 MySQL 8.0 不支持两位数格式的年份。 |