Mysql中int和varchar类型
int类型:
int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是:
int ------- int(11)
bigint ------- bigint(20)
smallint ------- smallint(6)
tinyint ------- tinyint(4)
MySQL⽀持选择在该类型关键字后⾯的括号内指定整数值的显⽰宽度(例如,INT(4))。int(M) 在 integer 数据类型中,M 表⽰最⼤显⽰宽度,该可选显⽰宽度规定⽤于显⽰宽度⼩于指定的列宽度的值时从左侧填满宽度。
varchar2最大长度显⽰宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显⽰。
在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并⽆任何关系。和数字位数也⽆关系, int(3)、int(4)、int
(8) 在磁盘上都是占⽤ 4 btyes 的存储空间。
上⾯⼏种类型的存储范围见下图:
如何计算⼀个字节能够存储的整数位数?
⼀个字节8位,⽆符号的可以从0000 0000(0)到1111 1111(2^8-1=255)
有符号:有⼀位表⽰符号位(1表⽰负,0表⽰正)
正数:0 000 0000到0 111 1111(2^7-1=127,第⼀位0表⽰正)。
负数:从1 000 0000到1 111 1111(-(2^7-1)=-127)
负数在计算机中⽤补码表⽰-0的补码为0000 0000与+0的表⽰⼀致,所以⽤0000 0000表⽰+0和-0。所以1 000 0000不表⽰-0⽽表⽰-128。
2个字节有16位,⽆符号从0000 0000 0000 0000(0)到1111 1111 1111 1111(2^16-1)
有符号:(-2^15到2^15-1)
mysql中设置varchar长度的问题?
如果某⼀项中设置的是varchar(50),那么对英⽂当然是50,那么对中⽂呢?utf-8的中⽂占3个字节,那么这个varchar(50)是不是只能存16个汉字了?
mysql varchar(50) 不管中⽂还是英⽂都是存50个的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论