Mysql之 bigint(20)的含义
先看一下mysql几种int类型
https://dev.mysql.com/doc/refman/5.6/en/integer-types.html
上图每种类型占用几个字节,数据范围多少,都一目了然。
那么mysql中整数类型后面的数字,是不是指定这个字段的长度?比如bigint(20),20代表20个字节吗?
为自己之前的不求甚解感到羞愧。。
这些类型,是定长的,其容量是不会随着后面的数字而变化的,比如int(11)和int(8),都是一样的占4字节。tinyint(1)和tinyint(10)也都占用一个字节。
那么后面的11和8,有啥用呢?
mysql数据库中 :数据类型(m)来约束数据,其中数字m在不同的数据类型中表示含义是不同的,这里只讲整数。
整型数系统已经限制了取值范围,tinyint占1个字节、int占4个字节。所以整型数后面的m不是表示的数据长度,而是表示数据在显示时显示的最小长度。 tinyint(1) 这里的1表示的是 最短显示一个字符。tinyint(2) 这里的2表示的是 最短显示两个字符。 当字符长度超过(m)时,相当于啥都没发生; 当字符长度小于(m)时,就需要指定拿某个字符来填充,比如zerofill(表示用0填充), 设置tinyint(2) zerofill 你插入1时他会显示01;设置tinyint(4) zerofill 你插入1时他会显示0001。 所以,没有zerofill,(m)就是无用的。
总结:bigint(10)和bigint(20)的区别在于如果表定义加上zerofill后在客户端显示长度不同:
|
|
如果在创建bigint字段时,不指定长度,则默认长度为20:
|
|