MySQL的数据类型有大概可以分为5种,分别是 整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型。

整数类型

类型名称

存储需求

有符号

无符号

TINYINT

1BYTE

-128~127

0~255

SMALLINT

2BYTES 

-32768~32767

0~65535

MEDIUMINT

3BYTES

-8388608~8388607

0~16777215

INT(INTEGER)

4BYTES

-2147483648~2147483647

0~4294967295

BIGINT

8BYTES

-9223372036854775808~9223372036854775807

0~18446744073709551615

浮点数类型和定点数类型

类型名称

说明

存储需求(BYTES)

FLOAT

单精度浮点数

4

DOUBLE

双精度浮点数

8

DECIMAL(M,D)

压缩的“严格”定点数

M+2   

  • M:数值的总位数。 通俗点讲,就是看有多少个数字,比如,5.6789,M就是5。D:小数点后面能保留几位。 比如上面的5.6789 ,D就是4。 这只是举一个例子,来说明M,D是什么,实际是先有M,D的,然后在来控制数值,而不是更具数值来确定M,D。不单单就MECIMAL有M,D这两个参数,FLOAT 和 DOUBLE 都有。
  • FLOAT、DOUBLE、DECIMAL三者的区别?

都是用来表示我们所说的小数的也就是浮点数,但是三种的精度不一样,也就是后面显示的位数不一样,

  区别一:

     FLOAT显示后面的小数点位大概在40多位,

     DOUBLE能显示的就是300多位了,不是一个层次上的,

     DECIMAL这个小数点后面能显示的位数跟DOUBLE差不多,

  区别二:

     FLOAT和DOUBLE在不指定精度时,也就是不用(M,D),默认会按照实际的精度,也就是你写多少就是多少,而DECIMAL如不指定精度默认为(10,0),也就是如果不指定精度,插入数值56.89,在数据库中存储的就是57。所以一般使用DECIMAL时就会指定精度,而使用FLOAT和DOUBLE就不用。

  区别三:

     浮点数相对与定点数(DECIMAL)的优点就是在长度一定的情况下,浮点数能够表示更大的数据范围,但是缺点是会引起精度问题。

  • 什么时候使用FLOAT、DOUBLE、DECIMAL?

对精度要求比较高的时候,比如货币、科学数据等,使用DECIMAL的类型比较好。其他的时候,看你要存放的数据的大小而定了,一般使用DOUBLE。并且在使用浮点数时需要注意,尽量避免做浮点数的比较,比如加、减,谁大谁小,这样的操作,会引起精度缺失。

日期与时间类型

类型名称

日期格式

日期范围

存储需求(BYTES)

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-31

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

1970-01-01 00:00:00 UTC~2038-01-19 03:14:07UTC

4

字符串类型

类型名称

说明

存储需求(BYTES)

CHAR(M)

固定长度的非二进制字符串

M,   1<=M<=255

VARCHAR(M)

变长非二进制字符串

L+1 ,   L<=M和1<=M<=255

TINYTEXT

非常小的非二进制字符串

1+L,  L<2^8

TEXT

小的非二进制字符串

2+L, L<2^16

MEDIUMTEXT

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

3+L , L<2^24

LONGTEXT

大的非二进制字符串

4+L, L<2^32

ENUM

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

1或者2,取决于枚举值的数目,最大值65535

SET

-

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

二进制类型

类型名称

说明

存储需求(BYTES)

BIT(M)

位字段类型

大约(7+M)\8

BINARY(M)

固定长度二进制字符串

M

VARBINARY(M)

可变长度二进制字符串

1+M

TINYBLOM(M)

非常小的BLOB

1+L, L<2^8

BLOB(M)

小BLOB

2+L,L<2^16

MEDIUMBLOB(M)

中等大小的BLOB

3+L,L<2^24

LONGBLOB(M)

非常大的BLOB

4+L,L<2^32