mysql中char和varchar有什么区别?

我记得varchar是可变长char不可变可是刚刚我定义char(3)怎么输入2个字符也可以呢?... 我记得varchar是可变长 char不可变
可是刚刚我定义char(3) 怎么输入2个字符也可以呢?
展开
 我来答
roclee81
推荐于2017-09-08 · TA获得超过227个赞
知道答主
回答量:10
采纳率:0%
帮助的人:4.6万
展开全部
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

在MySQL中用来判断是否需要进行对据列类型转换的规则

1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
超级飘飘乖乖
推荐于2019-10-21 · TA获得超过3.4万个赞
知道答主
回答量:205
采纳率:100%
帮助的人:6.3万
展开全部

mysql中char与varchar的区别分析

1.都是用来存储字符串的,只是他们的保存方式不一样。

2.char有固定的长度,而varchar属于可变长的字符类型。

char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:


char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。

在MySQL中用来判断是否需要进行对据列类型转换的规则



1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.


2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.


3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
椰子糖60
2020-03-31
知道答主
回答量:2
采纳率:0%
帮助的人:1229
展开全部
varchar通常用于保存可变长字符串。在磁盘存储数据时,它只会占用实际使用到的空间,因此对性能有提升。vachar在保存数据时会额外使用1个或者2个字符,用于记录列的长度,如果列内字节长度小于等于255就使用1个字节记录,如果是大于255则使用2个字节记录。因为varchar是变长的,所以update操作可能会产生碎片,从而使列的长度变长,mysql还需要做额外的工作处理。其实varchar(5)和varchar(255)存储'hello'所用的空间是一样的,但是我们在实际使用的时候,列的长度还是越短越好,原因是更长的列会占用更多的内存,Mysql通常会分配固定大小的内存块保存内部值。这个在内存临时表做排序和操作的时候会变得很糟糕,在磁盘临时表进行排序时也会特别的糟糕。
再说一下char,对比下你就会明白。
char类型适用于存储固定长度的数据。比如说MD5后的密码,这个长度就是固定的32位,很适合使用char类型。因为char类型是固定长度,因此在修改数据时也不容易产生碎片。他在磁盘上的存储空间是固定的,如果存储的数据长度不够,会在右侧以空格的方式补充,方便进行比较。对于非常短的列(单字节字符集),char的效率比varchar要高,因为char不需要使用额外的字节去记录长度。
使用什么样的类型存储数据,要根据实际情况而定,最好是对各种存储类型都有一定的了解。
纯手打,希望可以帮到你,共同进步。:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d127579
2008-04-09 · TA获得超过1663个赞
知道小有建树答主
回答量:634
采纳率:0%
帮助的人:0
展开全部
char固定长度,是说占用空间的长度一定,而不是必须有那么多值。你输入两个字符,第三个字符空着,但是必须不能被其它字符占用。
varchar就可以啊!没有占用到那么长,就可以少给她分配空间,从而达到介绍资源的目的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我吐血很红
推荐于2018-03-02 · 超过26用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:40.8万
引用roclee81的回答:
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

在MySQL中用来判断是否需要进行对据列类型转换的规则

1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
展开全部
在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节,这个说法是错的。当 M <= 255 的时候是用一个字节即可记录其长度,当 M>255 的时候则需要2个字节。因为 1 个字节只能记录变长长度为 0~255,而如果变长长度为 32767 这种大于 255 的值的时候,是没有办法单单用1个字节记录下来的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式