mysql 设置字段长度为啥 一般是 4 的倍数?

2015-05-04 10:32:13 +08:00
 hobbyliu

mysql 设置字段长度为啥 一般是4的倍数?
比如 int(4) 而不是 int(3)

8008 次点击
所在节点    MySQL
34 条回复
msg7086
2015-05-04 10:40:44 +08:00
我倒是很少见到有int(4)的。
laoyuan
2015-05-04 10:46:54 +08:00
谁能告诉我int(4) 和 int(3) 有什么区别?
JayFang1993
2015-05-04 10:48:48 +08:00
我操,我是根据头像来的
yangqi
2015-05-04 10:51:06 +08:00
int(3)和int(4)所占用的空间都是一样的,3和4是只是限制显示的位数
wy315700
2015-05-04 10:53:53 +08:00
4楼正解,,,
hobbyliu
2015-05-04 10:55:38 +08:00
@yangqi 那int(11) 设定是否合理?
ksupertu
2015-05-04 10:57:14 +08:00
楼主需要补计算机基础原理《深入理解计算机系统》 关键字 二进制
hobbyliu
2015-05-04 11:04:19 +08:00
@ksupertu 额 我会好好看的 不是科班出身的说。。
wy315700
2015-05-04 11:09:25 +08:00
@hobbyliu int(11) 后面的11 不是二进制位数,是最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关;
perssy
2015-05-04 12:06:51 +08:00
显示宽度是最小宽度,不限制最大宽度,若设置了zerofill值则左边用0填充。 https://dev.mysql.com/doc/refman/4.1/en/numeric-type-attributes.html
另外,根据 http://stackoverflow.com/questions/5634104/what-is-the-size-of-column-of-int11-in-mysql-in-bytes ,显示宽度只在mysql的命令行中有效
wuyadong
2015-05-04 12:53:07 +08:00
这和计算机的存储结构有关,建议楼主阅读,计算机组成原理 相关书籍。
b821025551b
2015-05-04 12:56:15 +08:00
int设置的长度只是显示的补位长度,char设置的长度才是存储空间上的长度
jhdxr
2015-05-04 14:26:12 +08:00
不问是不是就先问为什么的都是耍流氓。。。

另外 @ksupertu , @wuyadong 这和储存结构有毛关系。这值不管设置多少,储存范围都那么大。莫装B。。。
cover
2015-05-04 14:52:42 +08:00
int(4) 应该表示的 是 10进制下的 位数把。。。所以进经常用的应该是 int(11)正好 32位(二进制)把。。。。 当然也可能 int(4)正好是 8位啊 16位啊 总之要变成2进制的
ksupertu
2015-05-04 14:59:09 +08:00
@jhdxr 请问,让人看基础课本,哪里装B了?那我也问你,为什么是四的倍数?你设置成4的倍数是否潜意识里受到了职业习惯的影响?引申发问,硬盘为什么要4K对齐?操作系统为什么是32位64位这样4的倍数?写个关键字 二进制,你就脑补成那个int后面位数是二进制了?我们谈论的是一个东西?
cover
2015-05-04 15:11:10 +08:00
@ksupertu 其实我觉得让人看课本没问题,不过回答问题的方式 应该是“ 首先这个问题其实很简单,应该这样这样解释,其次楼主可以去补一下xx课程,xx书 对楼主遇到这方面问题的时候会很有帮助”
这样会不会好一点呢。。。
yxqcyl
2015-05-04 15:17:36 +08:00
为什么我想到了王思聪?
b821025551b
2015-05-04 15:19:39 +08:00
@cover 不是,int(4)里的4就是补位数,和存储没关系。
cover
2015-05-04 15:29:37 +08:00
@b821025551b 刚刚查了下 是这样的。。孤陋寡闻了 一直不知道 其实括弧里面的数也没啥用咯
wuyadong
2015-05-04 15:31:40 +08:00
@jhdxr ...这有装逼么? 题主问得什么是4的倍数,这个数字问什么这么特别,这不是和计算机体系结构里的知识有关么,我只是非常诚恳的告诉楼主哪里可以知道答案....ps:如果想装逼应该就会回答,mysql的源码什么滴...........

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX