mysql数据库数据类型汇总

整数类型

整数类型

类型名称

说明

范围

存储需求

TINYINT

很小的整数

-128〜127

1个字节

SMALLINT

小的整数

-32768〜32767

2个字节

MEDIUMINT

中等大小的整数

-8388608〜8388607

3个字节

INT (INTEGHR)

普通大小的整数

-2147483648〜2147483647

4个字节

BIGINT

大整数

-9223372036854775808〜9223372036854775807

8个字节

 

 

 

 

 

 

 

 

 

 

小数类型

小数类型

类型名称

说明

范围

存储需求

FLOAT

单精度浮点数

  • 有符号的取值范围:-3.402823466E+38~-1.175494351E-38。
  • 无符号的取值范围:0 和 -1.175494351E-38~-3.402823466E+38。

4 个字节

DOUBLE

双精度浮点数

  • 有符号的取值范围:-1.7976931348623157E+308~-2.2250738585072014E-308。
  • 无符号的取值范围:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。

8 个字节

DECIMAL (M, D),DEC

压缩的“严格”定点数

DECIMAL 如果不指定精度,默认为(10,0)。

M+2 个字节

 

 

 

 

 

 

 

 

 

 

 

 

 

 

浮点数在长度一定时可以比定点数表示更大的范围,但有可能引起精度的问题

日期和时间类型

日期类型

类型名称

日期格式

日期范围

存储需求

YEAR

YYYY

1901 ~ 2155

1 个字节

TIME

HH:MM:SS

-838:59:59 ~ 838:59:59

3 个字节

DATE

YYYY-MM-DD

1000-01-01 ~ 9999-12-3

3 个字节

DATETIME

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

8 个字节

TIMESTAMP

YYYY-MM-DD HH:MM:SS

1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC

4 个字节

 

 

 

 

 

 

 

 

 

 

YEAR类型

是一个单字节类型,用于表示年,在存储时只需要一个字节。

TIME类型

用于只需要时间信息的值,在存储时需要3个字节。格式为HH:MM:SS。HH表示小时,MM表示分钟,SS表示秒。

 

TIME 类型的取值范围为 -838:59:59~838:59:59,小时部分如此大的原因是 TIME 类型不仅可以用于表示一天的时间(必须小于 24 小时),还可能是某个事件过去的时间或两个事件之间的时间间隔(可大于 24 小时,或者甚至为负)。

可以使用各种格式指定 TIME 值,如下所示。

  • 'D HH:MM:SS' 格式的字符串。还可以使用这些“非严格”的语法:'HH:MM:SS'、'HH:MM'、'D HH' 或 'SS'。这里的 D 表示日,可以取 0~34 之间的值。在插入数据库时,D 被转换为小时保存,格式为 “D*24+HH”。
  • 'HHMMSS' 格式、没有间隔符的字符串或者 HHMMSS 格式的数值,假定是有意义的时间。例如,'101112' 被理解为'10:11:12',但是 '106112' 是不合法的(它有一个没有意义的分钟部分),在存储时将变为 00:00:00。
  • 转自C语言中文网

DATE类型

用于仅需要日期值时,没有时间部分,在存储时需要3个字节。日期格式为 'YYYY-MM-DD',其中 YYYY 表示年,MM 表示月,DD 表示日。

提示:MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'和'98@11@31' 是等价的,这些值也可以正确地插入数据库。

DATETIME类型

用于需要同时包含日期和时间信息的值,在存储需要8个字节,日期格式为 'YYYY-MM-DD HH:MM:SS',其中 YYYY 表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分钟,SS 表示秒。

TIMESTAMP类型

显示格式与DATETIME相同,显示宽度固定在 19 个字符,日期格式为 YYYY-MM-DD HH:MM:SS,在存储时需要 4 个字节。

与DATETIME的区别

DATETIME的取值范围更大,存储所需字节更小,但是TIMESTAMP可以根据地区不同自动转换时区。

字符串类型

类型名称

类型名称

说明

存储需求

CHAR(M)

固定长度非二进制字符串

M 字节,1<=M<=255

VARCHAR(M)

变长非二进制字符串

L+1字节,在此,L< = M和 1<=M<=255

TINYTEXT

非常小的非二进制字符串

L+1字节,在此,L<2^8

TEXT

小的非二进制字符串

L+2字节,在此,L<2^16

MEDIUMTEXT

中等大小的非二进制字符串

L+3字节,在此,L<2^24

LONGTEXT

大的非二进制字符串

L+4字节,在此,L<2^32

ENUM

枚举类型,只能有一个枚举字符串值

1或2个字节,取决于枚举值的数目 (最大值为65535)

SET

一个设置,字符串对象可以有零个或 多个SET成员

1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员

 

 

 

 

 

 

 

 

 

 

 

 

varchar或text是变长字段,在存储时会在存储需要的字符后添加一个字节记录字符长度

ENUM和SET的区别:ENUM只能从定义的列值中选择一个值,而set可以选择多个组合插入数据表

二进制类型

-

二进制数据

类型名称

说明

存储需求

BIT(M)

位字段类型

大约 (M+7)/8 字节

BINARY(M)

固定长度二进制字符串

M 字节

VARBINARY (M)

可变长度二进制字符串

M+1 字节

TINYBLOB (M)

非常小的BLOB

L+1 字节,在此,L<2^8

BLOB (M)

小 BLOB

L+2 字节,在此,L<2^16

MEDIUMBLOB (M)

中等大小的BLOB

L+3 字节,在此,L<2^24

LONGBLOB (M)

非常大的BLOB

L+4 字节,在此,L<2^32