unsigned和zerofill,MySQL的两个特殊属性
1 unsigned
unsigned是去掉数字类型,例如int类型:-2^31 ~ 2^31 - 1,并且没有signed int范围:0 ~ 2^32。无符号似乎是一个很好的类型,特别是当用于自动乘法或非负整数时。但在实际使用过程中,可能会出现一些意想不到的情况。
如上图所示,我们创建了一个新的测试表。这两个字段都是 unsigned int 类型。我们输入了两个值,然后做减法函数的时候就报错了。这不是我们想要的结果。一般 1-2=-1 ,但是当数据类型为无符号时,MySQL运算的结果也是无符号的,-1超出了无符号范围,所以会出错。
如何解决这个问题?设置sql_mode可以解决这个问题,这是一个东西。例如,如果在非空字段中输入空值,则日期字段中将输入无效日期 2017-12-32。一般来说,生产环境的设置是严格的。因此,在不熟悉MySQL基本结构或者不理解无符号规则的情况下,请谨慎使用。
2 Zerofill
zerofill 与显示的字符相同。首先,我们来看看MySQL数据库中数字类型的长度意味着什么。使用show create table命令可以查看建表语句。
你会看到int(10)。这是什么意思?整数不是只有4个字节吗?这个10是什么意思?如果没有zerofill属性,括号中的数字就没有意义。? 我们再看一下表
a中的数据。加上体育场前面的三个0。这是因为 Zerofill 属性有效。如果mysql字段中输入的值的长度小于该值的长度,则会在该值的前面。相关数据用零填充。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。