int类型无论你怎么设置,怎么保存。当你写入数据的时候还是可以写入11位整数。我已经测试过了,在设计数据表的时候 id字段类型为 int(2) 按理只能输入2个数值,但是当我输入第11个数字的时候是没有报错的,直到输入12个数字的时候就报错了。
mysql 默认 int 是11位。系统早已经设定好了。看这篇文章 http://blog.sina.com.cn/s/blog_855d75160102v2hl.html 文中提到:“ 注意一点的,Char,Varchar不像数值类型,有系统默认长度,所以必须在括号里定义长度,可以有默认值”
mysql是按字符个数计算的,不是按字节计算的。这个要记好。
字符串的长度:
长度的单位为字符。一个多字节字符算作一个单字符。
全文:http://wenda.tianya.cn/question/13b15725691c6c74
我使用 Navicat for MySQL 测试过了,如果char(10) 表示该字段可以存储10个汉字,或者10个数字,或者10个英文字母。都是一样对代的。如果该字段数值超出10位字符,(一个多字节的汉字也当作一个字符处理)也就是输入11位将会报错。varchar(10)也是如此。
特殊字符,例如星号,QQ特殊字符 没有测试,应该也是同等对代的。其实我觉得,使用Navicat for mysql设置数据表的时候,字段长度软件会自动设置默认值。
附:
mysql中char(1)括号中的1表示字节长度还是字符长度
MySQL的varchar定义长度到底是字节还是字符
http://ju.outofmemory.cn/entry/43176 //把文中的“最大长度”替换为“最大字节”会更容易理解。