MySQL中整型长度的意义
首先说一下,并不是说只能存储指定长度的值,如:TINYINT(1) 不能存储数字10,这是错误的!!!
答案:
- 如果字段未设置 zerofill,则无意义。
- 如果字段设置了 zerofill,则不足指定长度的部分前面使用 0 填充。
以 TINYINT 为例:
DROP TABLE IF EXISTS `abc`; CREATE TABLE IF NOT EXISTS `abc` ( `id` TINYINT(2) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; INSERT INTO abc(id) VALUE (1); INSERT INTO abc(id) VALUE (11); INSERT INTO abc(id) VALUE (111); SELECT * FROM abc;
结果是:
1 11 111
如果字段指定 zerofill,就不一样了。
DROP TABLE IF EXISTS `abc`; CREATE TABLE IF NOT EXISTS `abc` ( `id` TINYINT(2) ZEROFILL ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; INSERT INTO abc(id) VALUE (1); INSERT INTO abc(id) VALUE (11); INSERT INTO abc(id) VALUE (111); SELECT * FROM abc;
结果是:
01 11 111
嗯,就是这么个意思,个人感觉实际意义并不大,所以整型字段设置长度几乎没什么意义。
------------------------------我是博客签名------------------------------
座右铭:不要因为知识简单就忽略,不积跬步无以至千里。
版权声明:自由转载-非商用-非衍生-保持署名。
本作品采用知识共享署名 4.0 国际许可协议进行许可。
----------------------------------------------------------------------
座右铭:不要因为知识简单就忽略,不积跬步无以至千里。
版权声明:自由转载-非商用-非衍生-保持署名。
本作品采用知识共享署名 4.0 国际许可协议进行许可。
----------------------------------------------------------------------