MySQL 常用的数据类型
MySQL支持很多数据类型,大致上可以分成3类:
1. 数值类型
2. 日期和时间类型
3. 字符串类型
数值类型
1.整数型
类型 | 大小 | 范围(带符号) | 范围(无符号) | 描述 |
---|---|---|---|---|
TINYINT | 1 Byte (8bit) | -128~+127 | 0~255 | 极小整数 |
SMALLINT | 2 Byte (16bit) | -32768 ~ +32767 | 0 ~ 65535 | 小整数 |
MEDIUMINT | 3 Byte (24bit) | -8388608 ~ +8388607 | 0 ~ 16777215 | 中等整数 |
INT(INTEGER) | 4 Byte (32bit) | -2147483648 ~ +2147483647 | 0 ~ 4294967295 | 一般整数 |
BIGINT | 8 Byte (64bit) | -263 ~ +263 -1 | 0~ +264 -1 | 极大整数值 |
2.浮点型
类型 | 大小 | 范围(带符号) | 描述 |
---|---|---|---|
FLOAT | 4 Byte (32bit) | -3.402823466E+38 ~ -1.175494351E-38、 0、1.175494351E-38 ~ 3.402823466E+38 | 单精度浮点数值 |
DOUBLE | 8 Byte (64bit) | -1.7976931348623157E+308 ~ -2.2250738585072014E-308、 0、2.2250738585072014E-308 ~ 1.7976931348623157E+308 | 双精度浮点数值 |
DECIMAL | DECIMAL(M,D) 如果M>D,为 M+2 Byte 否则为 D+2 Byte | 依赖于M和D的值 | 依赖于M和D的值 |
注意:无符号的
float
和double
只是不允许负数,并没有改变正数的范围。
日期和时间类型
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
YEAR | 1 Byte | 1901 ~ 2155 | YYYY | 年份值 |
DATE | 3 Byte | 1000-01-01 ~ 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 Byte | -838:59:59 ~ 838:59:59 | HH:MM:SS | 时间值或持续时间 |
DATETIME | 8 Byte | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 日期和时间值 |
TIMESTAMP | 4 Byte | 1970-01-01 00:00:00 ~ 2037-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 日期和时间值,时间戳 |
字符串类型
类型 | 长度 | 描述 |
---|---|---|
CHAR | 0 ~ 255 Byte | 定长字符串 |
VARCHAR | 0 ~ 65535 Byte | 变长字符串 |
BINARY | 0 ~ 255 Byte | 类似于CHAR类型,但保存二进制字节 字符串而不是非二进制字符串 |
VARBINARY | 0 ~ 65535 Byte | 类似于VARCHAR类型,但保存二进制字节 字符串而不是非二进制字符串 |
TINYBLOB | 0 ~ 255 Byte | 最大长度为255(2 8 –1)字节的BLOB列 |
TINYTEXT | 0 ~ 255 Byte | 最大长度为255(28–1)字符的TEXT列。 |
BLOB | 0 ~ 65535 Byte | 最大长度为65,535(216–1)字节的BLOB列。 |
TEXT | 0 ~ 65535 Byte | 最大长度为65,535(216–1)字符的TEXT列。 |
MEDIUMBLOB | 0 ~ 2 24 - 1 Byte | 最大长度为16,777,215(224–1)字节的BLOB列。 |
MEDIUMTEXT | 0 ~ 2 24 - 1 Byte | 最大长度为16,777,215(224–1)字符的TEXT列。 |
LONGBLOB | 0 ~ 2 32 - 1 Byte | 最大长度为4,294,967,295 或4GB(232–1)字节的BLOB列。 |
LONGTEXT | 0 ~ 2 32 - 1 Byte | 最大长度为4,294,967,295 或4GB(232–1)字符的TEXT列 |
ENUM(‘value1’,’value2’,…) | 0 ~ 2 Byte | 枚举类型。只能有一个值的字符串, 从值列’value1’,’value2’,…, NULL中或特殊 ”错误值中选出。 ENUM列最多可以有65,535个截然 不同的值。ENUM值在内部用整数表示。 |
SET(‘value1’,’value2’,…) | 0 ~ 1 Byte | 一个设置。字符串对象可以有零个 或多个值,每个值必须来自列值 ’value1’,’value2’,… SET列最多可以有64个成员。 SET值在内部用整数表示。 |
参考文章:MySQL 5.1简体中文官方手册