整型
类型 | 字节数 |
---|
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 |