整型
类型 |
字节数 |
tinyint |
1字节 |
smallint |
2字节 |
mediumint |
3字节 |
int/integer |
4字节 |
bigint |
8字节 |
- 默认情况下,整型是有符号数。如果使用关键字unsigned来修饰整型就表示无符号数,能够涵盖的数字范围是有符号数的翻倍。
- 给字段设置
int(8)
不是表示给这个字段设置8字节的int型数据,而是在表格中,该字段的显示宽度为8位,例如:
alter table tablename modify id int(4) zerofill;
上面的命令可以将表中的id字段设置显示位数为4位,多余的位数用0填充。类似于:
小数类型
浮点数 |
定点数 |
float/double |
decimal |
- 定点数在MySQL内部以字符串的形式保存,适合保存精度高的数据
- 小数类型可以在类型后面加上(M, D). M表示数字可以显示多少位,D表示小数点后的位数。
字符串类型
类型 |
存储长度范围 |
char(n) |
定长字符串,0~255 |
varchar(n) |
变长字符串,0~65535 |
tinytext |
变长字符串,0~255 |
text |
变长字符串,0~65535 |
mediumtext |
变长字符串,0~16777215 |
longtext |
变长字符串,0~4294967295 |
日期时间类型
类型 |
最小值 |
最大值 |
date |
1000-01-01 |
9999-12-31 |
time |
-838:59:59 |
838:59:59 |
datetime |
1000-01-01 00:00:00 |
9999-12-31 23:59:59 |
timestamp |
1970-01-01 08:00:01 |
2037年的某个时刻 |
year |
1901 |
2155 |
- year类型的值可以用4位数(默认)或者2位数表示。2位数表示时,70 ~ 99表示的范围是1970 ~ 1999;01 ~ 69表示的范围是2001~2069
- datetime和timestamp都包括日期和时间,但是前者和时区无关,后者和时区有关。
- 如果一个表里面有两个字段的类型都是timestamp,第一个字段默认值是current_timestamp,第二个字段的默认值是0000-00-00 00:00:00
复合类型
MySQL中的复合数据类型包括enum
和set
enum
只允许从集合中选择一个值,集合最多可以包含65535个元素
set
允许从集合中选择多个元素,集合最多可以包含64个元素
二进制类型
类型 |
存储长度范围 |
binary |
0~255 |
varbinary |
0~65535 |
bit |
0~64 |
tinyblob |
0~255 |
blob |
0~65535 |
mediumblob |
0~16777215 |
longblob |
0~4294967295 |