当前位置:首页>

文章详细页

MySQL中的int(1)和tinyint(1)

分类:MySQL



问题:int(1) 和 tinyint(1) 有什么区别呢?
`flag` int(1) NOT NULL DEFAULT '0' ,
`flag` tinyint(1) NOT NULL DEFAULT '0',


扩展知识点:

- int(1) 和 tinyint(1) int类型占4个字节,tinyint占1个字节。  smallint 两个字节,MEDIUMINT 三个字节

- int(1) 和 int(4) 所占的存储空间都是一样,它存储的范围始终是 -2^31 到 2^31 - 1

- int(1) 和 int(4) 列制定了zerofill 就会用0填充显示,int(1)显示为1;int(4)显示为0001;

- int(1) 和 int(4) 后面括号中的数字,表示数字的显示宽度,不表示长度

- varchar(32)、char(4) 后面的数字表示储存字符的个数

- tinyint(1) 和 tinyint(3) 存123没什么区别,都能存的下( -128~127 或 0~255 )

- tinyint(1) 和 tinyint(3) 如果tinyint(3) zerofill 的话,插入值 12,会存储012,zerofill自动左边补零,这才是限制显示长度。

- int(1) 和 tinyint(1) ,在设计数据库的时候,所占的储存空间越少越好,像这样储存一个“个位数”的字段,还是用tinyint(1)的好。


总结:

1、int(1)     占4个字节(4个字节 2^32 有符号位 : -2147483648~2147483647 无符号位 : 0~4294967295)
   tinyint(1) 占1个字节(1个字节 2^8  有符号位 : -128~127 无符号位 : 0~255)
   后面跟的数字不影响取值范围和存储大小

2、数字类型的(4)表示数字的显示宽度,只有使用 zerofill 列约束时才会有区别

3、字符类型的(4)表示储存字符的个数