在建立數據庫表結構的時(shí)候,為了給一個(gè)String類(lèi)型的數據定義一個(gè)數據庫的數據庫類(lèi)型,一般參考的都是char或者varchar,這兩種選擇有時(shí)候讓人很糾結,今天想總結一下它們兩者的區別,明確一下選擇塔門(mén)的理由。
首先明確的是,char的長(cháng)度是不可變的,而varchar的長(cháng)度是可變的,也就是說(shuō),定義一個(gè)char[10]和varchar[10],如果存進(jìn)去的是‘csdn’,那么char所占的長(cháng)度依然為10,除了字符‘csdn’外,后面跟六個(gè)空格,而varchar就立馬把長(cháng)度變?yōu)?了,取數據的時(shí)候,char類(lèi)型的要用trim()去掉多余的空格,而varchar是不需要的,盡管如此,char的存取數度還是要比varchar要快得多,因為其長(cháng)度固定,方便程序的存儲與查找;但是char也為此付出的是空間的代價(jià),因為其長(cháng)度固定,所以難免會(huì )有多余的空格占位符占據空間,可謂是以空間換取時(shí)間效率,而varchar是以空間效率為首位的。再者,char的存儲方式是,對英文字符(ASCII)占用1個(gè)字節,對一個(gè)漢字占用兩個(gè)字節;而varchar的存儲方式是,對每個(gè)英文字符占用2個(gè)字節,漢字也占用2個(gè)字節,兩者的存儲數據都非unicode的字符數據。
聯(lián)系客服