一、整数部分
整数类型 | 字节 | 最小值 | 最大值 |
TINYINT | 1 | 有符号-128 无符号0 | 有符号127 无符号255 |
SMALLINT | 2 | 有符号-32768 无符号0 | 有符号32767 无符号65535 |
MEDIUMINT | 3 | 有符号-8388608 无符号0 | 有符号8388607 无符号1677215 |
INT和INTEGER | 4 | 有符号-2147483648 无符号0 | 有符号2147483647 无符号4294967295 |
BIGINT | 8 | 有符号-9223372036854775808 无符号0 | 有符号9223372036854775807 无符号18446744073709551615 |
注:创建无符号整数类型:create table tablename(id int unisgned);
二、浮点类型
浮点数类型 | 字节 | 最小值 | 最大值 | 备注 |
FLOAT | 4 | ±1.75494351E-38 | ±3.402823466E+38 | 小数点位数<=10位 |
DOUBLE | 8 | ±2.2250738585072014E-308 | ±1.7976931348623157E+308 | 小数点位数>10位 |
三、定点数类型
定点数类型 | 字节 | 最小值 | 最大值 |
DEC(M,D)和DECIMAL(M,D) | M+2 | 同DOUBLE | 同DOUBLE |
注:FLOAT、DOUBLE存储数据时存储的是近似值,而DECIMAL存储的是字符串,因此提供了更高的精度,在需要表示金额等货币类型时优先选择DECIMAL数据类型。
四、位类型
位类型 | 字节 | 最小值 | 最大值 |
BIT(M) | 1~8 | BIT(1) | BIT(64) |
注:插入时,若需要存储二进制数字需用(b'11')进行转换。
五、日期和时间类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -835:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
注:TIMESTAMP类型会在更新该行数据时自动更新为当前日期(该日期类型与实际时区相对应)
六、字符串类型
CHAR系列字符串类型 | 字节 | 描述 | 备注 |
CHAR(M) | M | M为0~255之间的整数 | 当存储的值长度达不到M时,会在后面追加空格 当取出该值时会自动将空格去除。 当然指定时PAD_CHAR_TO_FULL_LENGTH时, 在取数据时让尾部的空格保留 |
VARCHAR(M) | M | M为0~65535之间的整数 | 有一两个字符表示存储值的长度 |
注:M表示字符数,而并非字节数,一个字符占几个字节根据字符集来确定。
TEXT系列字符串 | 字节 | 描述 |
TINYTEXT | 0~255 | 值的长度为+2个字节 |
TEXT | 0~65535 | 值的长度为+2个字节 |
MEDIUMTEXT | 0~167772150 | 值的长度为+3个字节 |
LONGTEXT | 0~4294967295 | 值的长度为+4个字节 |
BINARY系列字符串类型 | 字节 | 描述 | 备注 |
BINARY(M) | M | 允许长度0~M | 用于存储少量二进制数据 |
VARBINARY(M) | M | 允许长度0~M |
BLOB系列字符串类型 | 字节 | 备注 |
TINYBLOB | 0~255 | 支持二进制数据(例如图片、音乐 或视频文件) |
BLOB | 0~2^16 | |
MEDIUMBLOB | 0~2^24 | |
LONGBLOB | 0~2^32 |