char和varchar2的區(qū)別?
1、長度上的區(qū)別
CHAR的長度是固定的,VARCHAR2的長度是可以變化的。
例如,存儲(chǔ)字符串“abc",對(duì)于CHAR (20),表示存儲(chǔ)的字符占20個(gè)字節(jié),而同樣的VARCHAR2 (20)就只占3個(gè)字節(jié)的長度,20只是最大值,而且當(dāng)存儲(chǔ)的字符小于20時(shí),按實(shí)際的長度來存儲(chǔ)。
2、意義上的區(qū)別
VARCHAR是VARCHAR2的同義詞,工業(yè)標(biāo)準(zhǔn)的VARCHAR類型可以用來存儲(chǔ)空字符串,但是Oracle自己開發(fā)了一個(gè)數(shù)據(jù)類型VARCHAR2,這個(gè)類型不是一個(gè)標(biāo)準(zhǔn)的VARCHAR,它在數(shù)據(jù)庫中varchar列可以存儲(chǔ)空字符串的特性改為存儲(chǔ)NULL值。
3、空間大小上的區(qū)別
VARCHAR2比CHAR要節(jié)省空間,VARCHAR2在效率上也比CHAR差一些,所以如果想獲得效率,就必須犧牲一定的空間,這就是在數(shù)據(jù)庫設(shè)計(jì)上常說的‘以空間換效率’。
VARCHAR2雖然比CHAR節(jié)省空間,但如果一個(gè)VARCHAR2列經(jīng)常被修改,且每次被修改數(shù)據(jù)的長度不同會(huì)引起‘行遷移’現(xiàn)象。