MySQL中的数据类型可以分为三类:
1.数值类型
类型(大写) |
大小 | 范围(有符号) |
范围(无符号) |
用途 |
tinyint |
1字节 |
(-128,127) |
(0,255) |
小整数型 |
smallint |
2字节 |
(-32768,32767) |
(0,65535) |
大整数型 |
mediumint |
3字节 |
(-8388608,8388607) |
(0,16777215) |
大整数型 |
int/integer |
4字节 |
(-2147483648,214748367) |
(0,4294967295) |
大整数型 |
bigint |
8字节 |
(-9223372036854,775808,9223372 036854775807) |
(0,18 446 744 073 709 551 615) |
极大整数型 |
float |
4字节 |
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) |
0,(1.175 494 351 E-38,3.402 823 466 E+38) |
单精度浮点数值 |
double |
8字节 |
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
双精度浮点型 |
decimal(小数) |
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 |
依赖于M和D的值 |
依赖于M和D的值 |
小数值 |
2.日期/时间类型
类型 |
大小 |
范围 |
格式 |
用途 |
DATA |
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 |
年份值 |
DATATIME |
8 |
1000-01-01 00:00:00/9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值 |
TIMESTAMP |
4 |
|
YYYYMMDD HHMMSS |
混合日期和时间值,时间戳 |
每个时间类型有一个有效范围值和一个零值,当指定不合法的MySQL不能表示的值时使用零值。
3.字符串类型
类型 |
大小 | 用途 |
CHAR |
0-255字节 |
定长字符串 |
VARCHAR |
0-65535字节 |
变长字符 |
char和varchar区别:
- char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此
- char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n<=255)或2个字节(n>255),所以 varchar(4),存入 3 个字符将占用 4 个字节
- char 类型的字符串检索速度要比 varchar 类型的快