MySQL数据类型 详细讲解

数值数据类型:包括整数类型TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、浮点小数数据类型FLOAT和DOUBLE、定点小树类型DECIMAL。

日期/时间类型:包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。

字符串类型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。

1.1 整数类型

数值型数据类型主要用来存储数字,MYSQL提供了多种数值数据类型,不同的数据库有不同的取值范围,可以存储的值范围越大,其所存储的控件也会越大。MySQL主要提供整数类型有:TINYTINT、SMALLINT、MEDIUMINT、INT、BIGINT。整数类型属性的字段可以添加AUTO_INCREMENT自增约束条件。下表列出了MySQL中的数值类型。

类型名称说明存储需求
TINYINT   很小的整数   1个字节  
SMALLINT   小的整数   2个字节  
MEDIUMINT   中等大小的整数   3个字节  
INT   普通大小的整数   4个字节  
BIGINT   大整数   8个字节  

从表可知,不同类型整数存储所需的字节数是不同的,占用字节数最小的是TINYINT类型,占用字节最大的是BIGINT类型,相应的占用字节越多的类型所能表示的数值范围越大。根据占用字节数可以求出每一种数据的取值范围,例如TINYINT需要1个字节(8bits)来存储,那么TINYINT无符号数的最大值为2^8-1,即255;TINYINT有符号数的最大值为2^7-1,即127。其它类型如下表所示:

数据类型有符号无符号
TINYINT   -128~127   0~255  
SMALLINT   -32768~32767   0~65535  
MEDIUMINT   -8388608~8388607   0~16777215  
INT   -2147483648~2147483647   0~4294967295  
BIGINT   -9223372036854775808~9223372036854775807   0~18446744073709551615  
1.2 浮点数类型和定点数类型

MySQL中使用浮点数和定点数来表示小数。浮点类型有两种:单精度(FLOAT)和双精度(DOUBLE)。定点类型只有一种:DECIMAL。浮点类型和定点类型都可以用(M,N)来表示,其中M称为精度,表示总共的位数;N称为标度,是表示小数的位数。下表列出了小数类型存储的需求。

类型名称说明存储需求
FLOAT   单精度浮点数   4个字节  
DOUBLE   双精度浮点数   8个字节  
DECIMAL(M,D),DEC   压缩的”严格”定点数   M+2个字节  

DECIMAL类型不同于FLOAT和DOUBLE,DECIMAL实际是以串存放的,DECIMAL可能的最大取值范围与DOUBLE一样,但是其有效的取值范围由M和D的值决定。如果改变M而固定D,则取值范围将随M的变大而变大。

1.3 日期/时间类型

MySQL中有多种表示日期的数据类型,主要有:DATETIME、DATE、TIMESTAMP、TIME和YEAR。下表列出了MySQL日期/时间类型:

类型名称日期格式日期范围存储需求
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   1970-01-01 UTC ~ 2038-01-19 03:14:07 UTC   4字节  
1.4 字符串类型

字符串类型用来存储字符串数据,除了可以存储字符串之外,还可以存储其它数据,比如图片和声音二进制数据。字符串可以进行区分或者不区分大小写的串比较,另外,还可以进行模式匹配查找。MySQL中字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。下表列出了字符串数据类型。

类型名称说明存储需求
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^32  
LONGTEXT   大的非二进制字符串   L+4字节,在此L<2^24  
ENUM   枚举类型,只能有一个枚举字符串值   1或2个字节,取决于枚举值数目(最大值65535)  
SET   一个设置,字符串对象可以有0个或多个SET成员   1,2,3,4或8个字节,取决于集合成员的数量(最多64个成员)  
1.5 二进制类型

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/07882c5eef101836ee083809cfb51f46.html