数据类型
MySQL数据管理系统提供了数据类型决定表储存数据的类型。
整形类型
MySQL数据库管理系统除了支持标准SQL中的所有整数类型(SMALLINT和INT)外,还进行了相应的扩展,扩展后增加量TINYINT、MENDIUMINT和BIGINT这三个整数类型。
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TINYINT | 1 | 有符号-128;无符号0; | 有符号127;无符号255 |
SMALLINT | 2 | 有符号-32768;无符号0 | 有符号32767;无符号65535; |
MEDIUMINT | 3 | 有符号-8388608;无符号0 | 有符号8388607;无符号1677215 |
INT和INTEGER | 4 | 有符号-2147483648;无符号0 | 有符号2147483647;无符号4294967295 |
BIGINT | 8 | 有符号-xxxxxxxxxxxxxxxx | xxxxxxxxxxxxxxxxxxxxxxx |
查看系统帮助:
HELP contents; (此命令可以查看MySQL帮助文档支持的目录列表,然后根据需要查看的条目选择查看)
HELP Data Types;
HELP INT; (此命令可以查看INT类型的帮助)
浮点数类型、定点数类型和位类型
MySQL数据库管理系统除了支持标准的SQL中的所有浮点数类型(FLOAT与DAUBLE)定点类型(DEC)外还扩展了位类型(BIT)
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
FLOAT | 4 | +-1.75494351E-38 | +-3.402823466E+38 |
DOUBLE | 8 | +-2.2250738585072014E-308 | +-1.7976931xxxxxxxx |
在储存小数时根据需求选择类型,DOUBLE型支持精到小数点后10位
定点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DEC(M,D)或DECIMAL(M,D) | M+2 | 与DOUBLE相同 | 与DOUBLE相同 |
该类型中DEC和ECIMAL这两个定点数类型是同名词,该类型的取值范围与DOUBLE相同,但是其有效取值范围由M和D决定,该类型精度比DOUBLE还高
位类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
BIT(M) | 1~8 | BIT(1) | BIT(64) |
位类型BIT的字节数是M,M的取值范围位1~8,即该类型的储存空间是根据其精度决定的。
日期和时间类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 199700101080001 | 2038年的某个时刻 |
TIME | 3 | -835:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
如果要表示年月日,一般会使用DATE类型,如果要表示年月日分秒,一般使用DATETIME类型
字符串类型
CHAR系列字符串类型 | 字节 | 描述 |
---|---|---|
CHAR(M) | M | M为0-255之间的整数 |
VARCHAR(M) | M | M为0-65535之间的整数 |
CHAR类型最大为4个字节。VARCHAR类型长度是可变的,其长度范围为0-65535
TEXT系列字符串类型 | 字节 | 描述 |
---|---|---|
TINYTEXT | 0-255 | 值的长度范围为+-2字节 |
TEXT | 0-65535 | 值的长度范围为+-2字节 |
MEDIUMTEXT | 0-167772150 | 值的长度范围为+-3字节 |
LONGTEXT | 0-4294967295 | 值的长度范围为+-4字节 |
TEXT系列中的各种类型字符串类型允许长度和储存字节不同,其中TINYTEXT字符串类型允许储存字符串长度最小,LONGTEXT字符串允许储存类型长度最大。
BINGAR系列字符串类型 | 字节 | 描述 |
---|---|---|
BINARY(M) | M | 允许长度为0-M |
VARBINARY(M) | M | 允许长度为0-M |
表中两个类型与CHAR,VARCHAR非常相似,不同是,前者可以储存二进制数据(如图片、音乐、或者视频文件),而后者只能储存字符数据
BLOB系列字符串类型 | 字节 |
---|---|
TINYBOLB | 0-255 |
BLOB | 0-2的16次方 |
MEDIUMBLOB | 0-2的24次方 |
LONGBLOB | 0-2的32次方 |
表中类型与TEXT系列非常相似,不同的是,前者可以储存二进制数据,而后者只能储存字符数据