char和varchar的區(qū)別:
在建立數(shù)據(jù)庫(kù)表結(jié)構(gòu)的時(shí)候,為了給一個(gè)String類型的數(shù)據(jù)定義一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型,一般參考的都是char或者varchar。
char的長(zhǎng)度是不可變的,而varchar的長(zhǎng)度是可變的,也就是說(shuō),定義一個(gè)char[10]和varchar[10],如果存進(jìn)去的是‘csdn’,那么char所占的長(zhǎng)度依然為10,除了字符‘csdn’外,后面跟六個(gè)空格,而varchar就立馬把長(zhǎng)度變?yōu)?了,取數(shù)據(jù)的時(shí)候,char類型的要用trim()去掉多余的空格,而varchar是不需要的,盡管如此,char的存取數(shù)度還是要比varchar要快得多,因?yàn)槠溟L(zhǎng)度固定,方便程序的存儲(chǔ)與查找;但是char也為此付出的是空間的代價(jià),因?yàn)槠溟L(zhǎng)度固定,所以難免會(huì)有多余的空格占位符占據(jù)空間,可謂是以空間換取時(shí)間效率,而varchar是以空間效率為首位的。再者,char的存儲(chǔ)方式是,對(duì)英文字符(ASCII)占用1個(gè)字節(jié),對(duì)一個(gè)漢字占用兩個(gè)字節(jié);而varchar的存儲(chǔ)方式是,對(duì)每個(gè)英文字符占用2個(gè)字節(jié),漢字也占用2個(gè)字節(jié),兩者的存儲(chǔ)數(shù)據(jù)都非unicode的字符數(shù)據(jù)。








暫無(wú)數(shù)據(jù)