My SQL 数据类型
一、MySQL的数据类型 主要包括以下五大类:
整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
浮点数类型:FLOAT、DOUBLE、DECIMAL
字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
日期类型:Date、DateTime、TimeStamp、Time、Year
其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection 等。

1、整数
| 类型 | 说明 | 存储需求(取值范围) |
|---|---|---|
| tinyin | 很小整数 | 1字节([0~255]、[-128~127]);255 = 2^8-1;127=2^7-1 |
| smallint | 小整数 | 2字节([0~65535]、[-32768~32767]);65535 = 2^16-1 |
| mediumint | 中等 | 3字节([0~16777215]);16777215 = 2^24-1 |
| int(intege) | 普通 | 4字节([0~4294967295]);4294967295 = 2^32-1 |
| bigint | 大整数 | 8字节([0~18446744073709551615]);18446744073709551615 = 2^64-1 |
注: 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
2、浮点数&定点数
| 类型 | 说明 | 存储需求(取值范围) |
|---|---|---|
| float(m,d) | 单精度浮点数 | 4字节(8位精度) m总个数,d小数位 |
| double(m,d) | 双精度浮点数 | 8字节(16位精度) m总个数,d小数位 |
| decimal(m,d) | 压缩的“严格”定点数 | m<65 ,d<30 |
注: 定点数以字符串形式存储,对精度要求高时使用decimal较好;尽量避免对浮点数进行减法和比较运算。
3、时间/日期类型
| 数据类型 | 格式 |
|---|---|
| date | YYYY-MM-DD |
| time | HH:MM:SS |
| year | YYYY |
| datetime | YYYY-MM-DD HH:MM:SS |
| timestamp | YYYYMMDD HHMMSS |
注: 若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
4、字符串(char,varchar,_text)
| MySQL数据类型 | 含义 |
|---|---|
| char(n) | 固定长度,最多255个字符 |
| varchar(n) | 固定长度,最多65535个字符 |
| tinytext | 可变长度,最多255个字符 |
| text | 可变长度,最多65535个字符 |
| mediumtext | 可变长度,最多2的24次方-1个字符 |
| longtext | 可变长度,最多2的32次方-1个字符 |