一. int(n):
int(n)的n是显示宽度,默认为11,而不是我们直觉上认为的数长度。
比如:很多人,认为int(5)是指储存的数不能超过99999,但实际上存储数可以大于99999,这个5只是显示的宽度。
在比如:申明 id int(5) 存储数字10。select id 会显示10,只是机器帮我们自动省略前面的0位。
如果声明写成 id1 int(5) zerofill 补充关键字zerofill。select id 会显示00010 ,进行0位的补全。
二.char(n)和varchar(n)
1.char(n)和varchar(n)中n是字符长度,也就是我们直观上能储存的长度大小。
2.char的长度是不可变的,而varchar的长度是可变的。
定义一个char[8]和varchar[8],如果存进去的是‘abc’,那么char所占的长度依然为10,除了字符‘abc’外,后面跟5个空格,而varchar就立马把长度变为3了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。
char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找,也就是数据结构中所说的牺牲空间换取时间。