首先mysql中最长用的就是int数据类型:
一. int:有符号值:-2^31到2^31-1。无符号值:2^32-1。占用4个字节。
1. 首先是经典的int(3)和int(11)的经典问题:
int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是绝对不对的。
举例:12345既可以用int(3)表示也可以用int(11)表示。
解决:不论int(3)还是int(11)存储的长度都是4字节的。用int(M)为例:int(M)zerofill,但使用zerofill之后。
int(3)插入的是010,在前面补充了一个0,若int(3)和int(11)都不加zerofill,它们是没有区别的,M不是用来限制这个数 字的长度。
2.tyinint(1)与tyinint(3)也是同样的道理,关键就是列是否指定了zerofill。其次tyinint只占用1字节
二.varchar和char
1.varchar:变长字符串,0-65535字节。
首先是varchar(M):这里的M是指的是可以存储多少的字节。例如varchar(100)只能存放100字符,无论存放的是数组、字母还是UTF-8汉字(每个汉字3字节),都是存放100个,若存储的字节数超过了M的字节数,将会报错。
2.char:定长字符串,0-255字节
3.varchar和char的比较
char(10)和varchar(10)
存储123的时候,char(10)剩余的7个字节回用进行自动填充,而varchar(10)只占用3个字节长度,10是最大值。