在MySQL数据库中,每一条数据都有其数据类型,MySQL支持的数据类型主要分成三类:数字类型、字符串(或字符)类型、日期和时间类型。
一、数字类型
一般来说,数字类型可以分为整型和浮点型
1.1、整型数据类型
数据类型 | 取值范围 | 说明 | 单位 |
---|---|---|---|
TINYINT | 符号值:-127~127 无符号值:0~255 |
最小的整数 | 1字节 |
BIT | 符号值:-127~127 无符号值:0~255 |
最小的整数 | 1字节 |
BOOL | 符号值:-127~127 无符号值:0~255 |
最小的整数 | 1字节 |
SMALLINT | 符号值:-215~215-1 无符号值:0~216 |
小型整数 | 2字节 |
MEDIUMINT | 符号值:-223~223-1 无符号值:0~224 |
中型整数 | 3字节 |
INT | 符号值:-231~231-1 无符号值:0~232 |
标准整数 | 4字节 |
BIGINT | 符号值:-263~263-1 无符号值:0~264 |
大整数 | 8字节 |
其中:INT是INTEGER的简写。
1.2、浮点数据类型
数据类型 | 取值范围 | 说明 | 单位 |
---|---|---|---|
FLOAT | +(-)3.402823466E+38 | 单精度浮点数 | 8字节或4字节 |
DOUBLE | +(-)1.7976931348623157E+308 +(-)2.2250738585072014E-308 |
双精度浮点数 | 8字节 |
DEC | 可变 | 一般整数 | 自定义长度 |
其中:DEC是DECIMAL的简写。
创建表时,使用哪种数字类型,应遵循以下原则:
1、选择最小的可用类型,如果数值永远超不过127,最好使用TINYINT类型。
2、完全都是数值,最好使用整数类型。
3、浮点类型用于可能具有小数部分的数。
二、字符串类型
字符串类型可以分为三类:普通文本字符串类型(CHAR和VARCHAR)、可变类型(TEXT和BLOB)、特殊类型(SET和ENUM)。
2.1、普通文本字符串类型
类型 | 取值范围 | 说明 |
---|---|---|
char(M) | 0~255个字符 | 固定长度为M的字符串 |
char | 0~255个字符 | 与char(M)类似 |
varchar(M) | 0~255个字符 | 长度可变 |
2.2、可变类型(TEXT和BLOB)
其中,TEXT类型适合存储长文本;BLOB类型适合存储二进制数据,如声音、图形等。
类型 | 最大长度(字节数) | 说明 |
---|---|---|
TINYBLOB | 28-1 | 小BLOB字段 |
TINYTEXT | 28-1 | 小TEXT字段 |
BLOB | 216-1 | 常规BLOB字段 |
TTEXT | 216-1 | 常规TEXT字段 |
MEDIUMBLOB | 224-1 | 中BLOB字段 |
MEDIUMTEXT | 224-1 | 中TEXT字段 |
LONGBLOB | 232-1 | 长BLOB字段 |
LONGTEXT | 232-1 | 长TEXT字段 |
2.3、特殊类型(SET和ENUM)
类型 | 最大值 | 说明 |
---|---|---|
Enum(“value1”,“value2”,…) | 216 | 该类型的列只可以容纳所列值之一或为NULL |
Set(“value1”,“value2”,…) | 64 | 该类型的列只可以容纳一组值或为NULL |
三、日期和时间类型
日期和时间类型包括:DATETIME、DATE、TIMESTAMP、TIME和YEAR。其中每种类型都有其取值范围,如赋予它一个不合法的值,将会被0代替。
类型 | 取值范围 | 说明 |
---|---|---|
DATE | 1000-01-01 ~ 9999-12-31 | 日期,格式为YYYY-MM-DD |
TIME | -838:59:59 ~ 835:59:59 | 时间,格式为HH-MM-SS |
DATETIME | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 日期和时间,格式为YYYY-MM-DD HH-MM-SS |
TIMESTAMP | 1970-01-01 00:00:00 ~ 2037年的某个时间 | 时间戳,在处理报告时使用的显示格式取决于M的值 |
YEAR | 1901~2155 | 年份可指定两位数字和四位数字的格式 |