大概写一下区别
mysql 4.1版本以前 varchar最大支持255个字节 varchar(num) 中的 num是指的字节数
mysql 5.0版本以后 varchar最大支持65535个字节 varchar(num) 中的 num 指的是字符数
根据编码格式的不同 : 一个汉字在utf-8中是占3个字节,其它的汉字都代表2个字节.
编码历史从ASCII 到unicode 到utf8 可以看 字符编码的发展
char的速度 比 varchar快
但是char比varchar浪费空间
varchar在255个字节长度的时候,他在每个块前面用一个字节代表这个字符块的长度
varchar的存放和string是一样原理的,即length {block}这种方式,所以varchar的长度和它实际占用空间是无关的
varchar2 和varchar 的区别是varchar2 支持空 但是varchar2好像只在oracle中使用
decimal的区别
3.23之前M代表总长度(包括负号和小数点),D代表小数点后的小数位数
3.23之后 M就代表整数的位数(包括负号),D代表小数的位数(不包括小数点)
如果D为0 ,那么小数点那一位就省了,对应的旧版的M也会扩大范围