Skip to main content

数据类型

数据类型

数据类型是数据表中字段支持的数据可以定义的类型。主要分为三大类:数值类型、字符类型、日期类型。

整数类型

整数类型分为 五 种,分别是:

数据类型字节数值范围(有符号)值范围(无符号)
tinyint1(-128, 127)(0, 255)
smallint2(-32,768, 32,767)(0, 65,535)
mediumint3(-8,388,608, 8,388,607)(0, 16,777,215)
int / integer4(-2,147,483,648, 2,147,483,647)(0, 4,294,967,295)
bigint8(-9,223,372,036,854,775,808, 9,223,372,036,854,775,807)(0, 18,446,744,073,709,551,615)
  • 如果超出了当前数据类型的范围,则会报错。
  • 数据类型区分有符号和无符号,默认情况下是有符号。
  • 在设置整型是,可以设置整型数据将来显示的位宽。
create table table_name(
id int,
age tinyint(2) zerofill
);

浮点类型

浮点类型有两种,分别是:

数据类型字节数值范围(有符号)默认小数位数有效精度
float4(-3.402823466E+38, 3.402823466E+38)6 位6 位
double8(-1.7976931348623157E+308, 1.7976931348623157E+308)15 位10 位

使用时,可设置总位数及小数位数, m 表示总位数,d 表示小数位数。

// double(m, d) float(m, d)
create table table_name(
field double(20, 10) zerofill
);

定点类型

定点类型 decimal(M,D) 专门用于存储小数,M为总位数,D为小数位数,其本质是将数据分为两个部分来存储,每个部分都是整数。

create table table_name(
field decimal(5, 2)
);

字符串类型

数据类型字节数描述
char0~255定长字符串,最大存储字符数:255。示例:char(10) 存储 Crysta 时会补充 \u0000 填满剩余空间
varchar0~65535可变长度字符串,最大存储字符数:65535
tinyblob0~255二进制字符串,最大存储字符数:255
blob0~65535二进制字符串,最大存储字符数:65535
mediumblob0~1677215二进制字符串,最大存储字符数:1677215
longblob0~4294967295二进制字符串,最大存储字符数:4294967295
tinytext0~255可变长度文本字符串,最大存储字符数:255
text0~65535可变长度文本字符串,最大存储字符数:65535
mediumtext0~1677215可变长度文本字符串,最大存储字符数:1677215
longtext0~4294967295可变长度文本字符串,最大存储字符数:4294967295
  • char 不会回收多余的字符, 而 varchar 会回收多余的字符,如果超出申请的范围,则报错。
  • utf8 编码下,一个中文字符占 3 个字节,因此 varchar 最多存储 21844 个中文字符;在 gbk 编码下:一个中文字符占 2 个字节,因此 varchar 最多存储 32766 个中文字符。
  • 大文本数据类型在表中并不会实际占用所能保存的字节数,而是利用10个字节引用实际保存数据的地址。

日期类型

数据类型格式描述
date2023-08-21年月日
time18:31:40时分秒
year2023
datetime2023-08-21 18:31:40年月日时分秒
timestamp1692527500时间戳(秒)

枚举类型

枚举是一种特殊的数据类型,用于定义一个字段可以存储的一组 预定义字符串值,非常适合用于存储有限选项的数据。

枚举值在内部以整数存储,实际存储的是预定义值的索引,其索引从 1 开始,一个枚举列最多可以定义 65535 个值。

create table table_name (
field ENUM('value1', 'value2', ..., 'valueN') DEFAULT 'value1'
);

新增数据或修改数据时,其值只能是定义的选项值,否则会报错。

布尔类型

在 MySQL 中,布尔类型 (BOOLEANBOOL) 实际上并不是真正的布尔类型,而是 tinyint(1) 的别名,其值可以为 0 (假) 或 1 (真)。

create table tasks (
field BOOLEAN default 0
);

集合类型

集合类型使用 SET 数据类型,用于定义一个字段可以存储的一组预定义的字符串值的组合,适合用于多选的场景。每个值在内部被映射为一个二进制位,最多支持 64 个选项。

create table table_name (
field SET('value1', 'value2', ..., 'valueN') DEFAULT 'value1,value2'
);