请使用firefox,chrome等最新浏览器浏览本站。

关于mysql中的varchar和char之间的区别

后端 阿豹 305次浏览 0个评论 扫描二维码

关于mysql中的varchar和char之间的区别

         char是一种固定长度的类型,varchar则是一种可变长度的类型。
char(M) 类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足。(在检索操作中那些填补出来的空格字符将被去掉) 在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。
由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
但是我在用alter来给一个表添加一个字段时,发现我添加进去的数据类型是char,但是后来用describe显示出来的数据类型是varchar。下面是这个问题的答案:
原来mysql会自动对char和varchar进行数据类型的转换,转换规则如下:
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的。
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型。
例外:长度小于4个字符的char数据列不会被转换为varchar类型。
因为我加字段之前已经有几个字段都是varchar类型了,所以mysql自动将我加进去的那个字段由char变为varchar。


喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到