新聞中心
varchar和char有什么區(qū)別?

varchar和char都是用來存儲字符串類型的數(shù)據(jù)的數(shù)據(jù)類型。它們的主要區(qū)別在于存儲方式和存儲空間。
1. 存儲方式
char類型的數(shù)據(jù)是固定長度的,它會在存儲時占用固定的存儲空間,無論實際存儲的數(shù)據(jù)長度是否達到了該長度。例如,如果一個char(10)類型的字段存儲了一個長度為5的字符串,那么它仍然會占用10個字節(jié)的存儲空間,其中剩余的5個字節(jié)會被填充為默認值。
而varchar類型的數(shù)據(jù)是可變長度的,它會根據(jù)實際存儲的數(shù)據(jù)長度動態(tài)地分配存儲空間。例如,如果一個varchar(10)類型的字段存儲了一個長度為5的字符串,那么它只會占用5個字節(jié)的存儲空間。
2. 存儲空間oracle char和varchar的區(qū)別?
二者都是字段的字符數(shù)據(jù)類型,這點是相同的,主要不同在于二者的存儲辦法,以及查詢。
char是固定長度的,而varchar是不固定長度的。
比如:某字段的格式為char(8)。那么這個字段的長度就是8,就算你僅僅存了一個字符a,它占用的空間也是8個長度的字符占用的空間的大小,也就是說char比較浪費存儲空間。
相對而言,varchar就是一個可以變的字符類型,比如varchar2(8)表示最長可以存8位的字符,但是如果你僅僅存了一個a,那么這個a占用的存儲僅僅為它本身占用的一個字符長度。
也就是說從存儲來說:varchar2比char節(jié)省一些空間。
從查詢來說:這個沒有實際的例子證明,但是大部分人認為char字段的查詢比varchar要快一些,但是我估計除非數(shù)據(jù)量特別大,不然這點看不太出來的。char和varchar2的區(qū)別?
1、長度上的區(qū)別
CHAR的長度是固定的,VARCHAR2的長度是可以變化的。
例如,存儲字符串“abc",對于CHAR (20),表示存儲的字符占20個字節(jié),而同樣的VARCHAR2 (20)就只占3個字節(jié)的長度,20只是最大值,而且當存儲的字符小于20時,按實際的長度來存儲。
2、意義上的區(qū)別
VARCHAR是VARCHAR2的同義詞,工業(yè)標準的VARCHAR類型可以用來存儲空字符串,但是Oracle自己開發(fā)了一個數(shù)據(jù)類型VARCHAR2,這個類型不是一個標準的VARCHAR,它在數(shù)據(jù)庫中varchar列可以存儲空字符串的特性改為存儲NULL值。
3、空間大小上的區(qū)別
VARCHAR2比CHAR要節(jié)省空間,VARCHAR2在效率上也比CHAR差一些,所以如果想獲得效率,就必須犧牲一定的空間,這就是在數(shù)據(jù)庫設(shè)計上常說的‘以空間換效率’。
VARCHAR2雖然比CHAR節(jié)省空間,但如果一個VARCHAR2列經(jīng)常被修改,且每次被修改數(shù)據(jù)的長度不同會引起‘行遷移’現(xiàn)象。
網(wǎng)頁標題:varchar和char有什么區(qū)別
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/dpiogeg.html


咨詢
建站咨詢
