mysql-int(n)
作用
若不指定显示宽度,则默认为该类型的最大位数(int=>11)
作用相同于
printf
宽度控制,当数值位数小于指定值时,默认填充空格,大于指定值时,也不会截断!该显示宽度是可通过结果集(Result Set)中的元数据(Metadata)获取,具体采不采用取决于应用程序!
宽度和
zerofill
对数据存储(存储形式,占用空间)没有任何影响当列定义指定
zerofill
时,若该值小于指定宽度,select
查询输出会填充相应个数的0
测试
- 指定宽度和
zerofill
1 | create table t(num int(5) zerofill); |
- 不指定
zerofill
1 | MariaDB [test]> create table t1(num int(5)); |
- 不指定宽度,指定
zerofill
1 | MariaDB [test]> create table t2(num int zerofill); |
细节
对于int来说,取值范围-2^(32-1) to 0 to 2^(32-1)-1 = -2147483648 to 0 to 2147483647,最大显示宽度为11
对于unsigned int,0~4294967295,最大显示宽度为10
当指定
zerofill
时,mysql会自动追加unsigned
属性,!
1 | +-------+---------------------------+------+-----+---------+-------+ |
参考
- http://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html
- http://stackoverflow.com/questions/5634104/what-is-the-size-of-column-of-int11-in-mysql-in-bytes
- http://stackoverflow.com/questions/5256469/what-is-the-benefit-of-zerofill-in-mysql
- http://dev.mysql.com/doc/refman/5.7/en/integer-types.html