整数型数据类型 | |||
类型名称 | 说明 | 存储大小 | 取值范围 |
TINYINT | 很小的正数(一般用于boolean存储) | 1个字节 | -128~127 unsigned:0~255 |
SMALLINT | 小正数 | 2个字节 | -32768~32767 unsigned:0~65535 |
MEDIUMINT | 中等大小的正数 | 3个字节 | -2^23 ~2^23-1 unsigned: 2^24 -1 |
INT(INTEGER) | 普通大小的正数 | 4个字节 | -2^31 ~2^31-1 unsigned: 2^32 -1 |
BIGINT | 大正数(一般用于主键) | 8个字节 | -2^63 ~2^63-1 unsigned: 2^64 -1 |
小数型数据类型 | |||
FLOAT(M,N) | M表示总共位数,N表示小数位数(单精度浮点数) | 4个字节 | ±1.175494351E – 38 |
DOUBLE(M,N) | 双精度浮点数 | 8个字节 | ±2.2250738585072014E – 308 |
DECIMAL(M,D) | 压缩的“严格”定点数 | M+2个字节 | 可变;其值的范围依赖于M 和D |
字符串数据类型 | |||
CHAR(N) | 固定长度 | N * C(字符存储大小见文末注释1) | 0~255字符 |
VARCHAR(N) | 可变长度(与CHAR区别见文末注释2) | 实际存储大小 | 0~65535字节 |
TEXT | 文本 | 实际存储大小 | 0~65535字节 |
LONGTEXT | 长文本 | 实际存储大小 | 0~2^32-1字节 |
日期数据类型 | |||
DATE | 存储日期值(yyyy-MM-dd) | 3个字节 | 1000-01-01~9999-12-31 |
TIME | 存储时分秒(HH:mm:ss) | 3个字节 | 00:00:00~23:59:59 |
DATETIME | 存储日期+时间(yyyy-MM-dd HH:mm:ss) | 8个字节 | 1000-01-01 00:00:00~ 9999-12-31 23:59:59 |
TIMESTAMP | 存储日期+时间,可作时间戳(yyyy-MM-dd HH:mm:ss) | 4个字节 | 1970-01-01 00:00:01~ 2038-01-19 03:14:07 |
注释1:
UTF-8 : 一个英文/数字字符占1个字节,一个中文(含繁体)字符占3个字节。
Unicode: 一个英文/数字字符占2个字节,一个中文(含繁体)字符占2个字节。
符号 : 英文标点占1个字节,中文标点占2个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
注释2:
char:固定长度,最大长度是255字符。适合用在身份证号码、手机号码等定、等长的加密密码等。
varchar:可变长度,最大长度65535字节,其实最多只能存储65532个字节,还有3个字节用于存储长度。
1)char的存取速度优于varchar
2)char(20)表示这个字段最多存20个字符,如果只存了16个字符,那么也会占用20个字符的空间
varchar(20)表示这个字段最多存20个字符,如果只存了16个字符,那么只占用16个字符的空间
3)即使使用Varchar数据类型,也不能够太过于慷慨!比如你只使用到90个字符,VARCHAR(100)与VARCHAR(200),虽然他们用来存储90个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。