char(10)和VARCHAR(10)主要的区别是什么?

什么时或用VARCHAR,可以讲的简单一点吗??... 什么时或用VARCHAR,可以讲的简单一点吗?? 展开
 我来答
浪尖讨生活9z
高粉答主

2018-10-03 · 每个回答都超有意思的
知道小有建树答主
回答量:298
采纳率:100%
帮助的人:14万
展开全部
  1. 首先明确的是,char的长度是不可变的,而varchar的长度是可变的,

  2. 定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,

  3. char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

  4. char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

扩展资料:char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数。

参考资料:varchar百度百科

梦境无恒DN8b3
2018-05-08 · TA获得超过1.9万个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:5.2万
展开全部
  1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。

  2. CHAR的效率比VARCHAR2的效率稍高。 

  3. 目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。

  4. CHAR(10)若输入数据的字符数小于10,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。VARCHAR(10)数据类型的存储长度为实际数值长度。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高速路上飙单车
2008-06-15 · TA获得超过640个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:0
展开全部
区别:
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
何时该用CHAR,何时该用varchar2?
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人文漫步者

2019-12-21 · 矿业工程师
人文漫步者
矿业工程师
采纳数:6147 获赞数:20665
省级优秀毕业生

向TA提问 私信TA
展开全部
你想要区分这个变成成的区别,主要是一个是字段的长度,一个是词语的程度是不同的类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quziguang

2008-06-15 · TA获得超过3481个赞
知道大有可为答主
回答量:4965
采纳率:84%
帮助的人:952万
展开全部
CHAR(10)是不可变长度为10的字符串,占的存储空间始终为10个字符的长度,而VARCHAR(10)是可变长度的字符串,故而可以节省空间。例如:
储存"aaaaabbbbb",则CHAR(10)需要10个字符的空间来储存,VARCHAR(10)也需要10个字符的空间;
储存"aaa",则CHAR(10)需要10个字符的空间来储存,而VARCHAR(10)只需要3个字符的空间。

虽然每个记录节省的空间有限,但是记录很多的时候,节省的空间是很惊人的。

另外,推荐用VARCHAR2代替VARCHAR。因为Oracle今后会将VARCHAR作为其他用途。VARCHAR2目前和VARCHAR是完全相同的数据类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式