mysql int(11)与int(8)的区别
int(11)与int(8)的区别:1 括号里面的是显示宽度。显示宽度只是指明 mysql需要用多少个字符来显示该列数值,数值的位数小于指定的宽度时,左侧用数字 0 填充。2 如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。3 在存储方面确实没什么不同,设置长度只有在设置了自动填充 ZEROFILL 的时候才体现出来, 比如 id=1 长度为 i
int(11)与int(8)的区别:
1 括号里面的是 显示宽度。显示宽度只是指明 mysql需要用多少个字符来显示该列数值,数值的位数小于指定的宽度时,左侧用数字 0 填充。
2 如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。
3 在存储方面确实没什么不同,设置长度只有在设置了自动填充 ZEROFILL 的时候才体现出来, 比如 id=1 长度为 int (5) 的话会显示 00001。而一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数)
char(n)与varchar(n)的区别:
1 与int不同,这里的n并不代表字节,而代表 字符。
2 存值时,varchar 只会占用实际字符应该占用的字节空间 L+1;
3 char 会占满声明字符数,无论填充字符长短。
4 超过char和varchar的n设置后,字符串会被截断。
5 char在存储的时候会截断尾部的空格,varchar和text不会。
6 可变长度的字符型数据(varchar),会产生碎片
7 varchar(100)和varchar(200)按理说,在低于100时都是一样的,但其实varchar(200)更占内存。
关于tinyint(1)
在mysql数据库里面一般使用tinyint(1)代表boolean类型
而如果存储enum比如1、2、3、4,把类型设为tinyint(1)。
则在mybatis进行转换,转为map对象时,存的key就会变成boolean类型。
解决办法:
- jdbcURL的参数后面,添加:&tinyInt1isBit=false
- 更改字段类型为int
- 定义为tinyInt(N), N>1 (例如
tinyInt(2)
)
更多推荐
所有评论(0)