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: