unsigned和zerofill
- unsigned是指的无符号,就是没有负数,只能用正数和0,此时unsigned修饰的字段的值能够达到的最大值是原来的最大值加1,即原来一个tinyint字段能表示的范围是:-128~127,而unsigned修饰的字段范围是:0~255。
- zerofill是指的一个整型字段在容许的最大位数以前用0填充,好比一个字段设置为tinyint(4),须要用4个数字表示,而tinyint最大值为(假如是unsigned修饰)255,那么前面不足4位数都将用0填充,例如:0005, 0010, 0100, 0255。不管是int或是tinyint等整型数据,括号里面的数字只是表明这个数据最后的显示位数,不影响数据自己的存储大小。就是说int(1)和int(4)数据存储长度同样,int(1)仍是会比tinyint(8)存储空间占用大。总结一下数据大小:
- tinyint(1)与tinyint(4)在占用空间大小上没区别,都是一个字节
- int(1)与int(4)在占用空间大小上没区别,都是四个字节
- int(1)比tinyint(4)占用空间大,可是对于zerofill修饰的字段,最终显示出来的tinyint(4)都是以4个数字(前面补0)呈现出来,而int(1)是不用0补齐来呈现的
- tinyint一个字节 smallint 两个字节 MEDIUMINT三个字节 int 4个字节 BIGINT 8个字节,所以在选择字段类型的时候,在够用的状况下,能选择小的就尽可能选择小的,节省更多的空间
- int(6)与varchar(6)这两个6所表示的含义是不同的,int(6)只会影响zerofill字段最终的显示长度,而varchar(6)会要求字符串存储的长度不超过6字节
字段类型说明
各类字段类型在数据库存放的空间占用大小以下表数据库
数据类型 |
默认范围 |
unsigned范围 |
tinyint |
-2^7 ~ 2^7-1 |
0 ~ 2^8-1 |
smallint |
-2^15 ~ 2^15-1 |
0 ~ 2^16-1 |
MEDIUMINT |
-2^23 ~ 2^23-1 |
0 ~ 2^24-1 |
int |
-2^31 ~ 2^31-1 |
0 ~ 2^32-1 |
bigint |
-2^63 ~ 2^63-1 |
0 ~ 2^64-1 |