MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
类型 | 存储字节数 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 | -2^7 ~ 2^7 - 1 | 0 ~ 2^8 - 1 | 小整数值 |
SMALLINT | 2 | -2^15 ~ 2^15 - 1 | 0 ~ 2^16 - 1 | 大整数值 |
MEDIUMINT | 3 | -2^23 ~ 2^23 - 1 | 0 ~ 2^24 - 1 | 大整数值 |
INT或INTEGER | 4 | -2^31 ~ 2^31 - 1 | 0 ~ 2^32 - 1 | 大整数值 |
BIGINT | 8 | -2^63 ~ 2^63 - 1 | 0 ~ 2^64 - 1 | 极大整数值 |
FLOAT | 4 | -3.402823466E+38 ~ -1.175494 351E-38) 0 1.175494351E-38 ~ 3.402823466351E+38 |
0 1.175494351E-38 ~ 3.402823466E+38 |
单精度 浮点数值 |
DOUBLE | 8 | -1.7976931348623157E+308 ~ -2.225073858507201 4E-308 0 2.2250738585072014E-308 ~ 1.7976931348623157E+308 |
0 2.2250738585072014E-308 ~ 1.7976931348623157E+308 |
双精度 浮点数值 |
DECIMAL | DECIMAL(M,D) ,如果M>D,为M+2,否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
Double 和 Float 彼此的区别:
在内存中占有的字节数不同,单精度内存占4个字节,双精度内存占8个字节
有效数字位数不同(尾数),单精度小数点后有效位数7位, 双精度小数点后有效位数16位
数值取值范围不同,根据IEEE标准来计算
在程序中处理速度不同,一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
Double 和 Float 彼此的优缺点:
Float单精度
- 优点:Float单精度在一些处理器上比Double双精度更快而且只占用Double双精度一半的空间
- 缺点:但是当值很大或很小的时候,它将变得不精确
Double双精度
- 优点:Double 跟 Float比较, 必然是 Double 精度高,尾数可以有 16 位,而 Float 尾数精度只有 7 位
- 缺点:Double 双精度是消耗内存的,并且是 Float 单精度的两倍,Double 的运算速度比 Float 慢得多,因为Double 尾数比Float 的尾数多,所以计算起来必然是有开销的
日期/时间类型
类型 | 存储字节数 | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01 ~ 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59 ~ 838:59:59 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901 ~ 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:01 UTC ~2038-01-19 03:14:07 UTC | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
字符串类型
类型 | 存储字节数 | 用途 |
---|---|---|
CHAR | 0 ~ 255 | 定长字符串 |
VARCHAR | 0 ~ 65535 | 变长字符串 |
TINYBLOB | 0 ~ 255 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0 ~ 255 | 短文本字符串 |
BLOB | 0 ~ 65535 | 二进制形式的长文本数据 |
TEXT | 0 ~ 65535 | 长文本数据 |
MEDIUMBLOB | 0 ~ 16777215 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0 ~ 16777 215 | 中等长度文本数据 |
LONGBLOB | 0 ~ 4294967295 | 二进制形式的极大文本数据 |
LONGTEXT | 0 ~ 4294967295 | 极大文本数据 |
ENUM | 0 ~ 65535 | 枚举类型,只能存一个枚举字符串值 |
Read More: