char(10)和VARCHAR(10)主要的區別是什麼?

在建立數據庫表結構的時候,爲了給一個String類型的數據定義一個數據庫的數據庫類型,一般參考的都是char或者varchar,這兩種選擇有時候讓人很糾結,今天想總結一下它們兩者的區別,明確一下選擇塔門的理由。

首先明確的是,char的長度是不可變的,而varchar的長度是可變的,也就是說,定義一個char[10]和varchar[10],如果存進去的是‘csdn’,那麼char所佔的長度依然爲10,除了字符‘csdn’外,後面跟六個空格,而varchar就立馬把長度變爲4了,取數據的時候,char類型的要用trim()去掉多餘的空格,而varchar是不需要的,儘管如此,char的存取數度還是要比varchar要快得多,因爲其長度固定,方便程序的存儲與查找;但是char也爲此付出的是空間的代價,因爲其長度固定,所以難免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間效率,而varchar是以空間效率爲首位的。再者,char的存儲方式是,對英文字符(ASCII)佔用1個字節,對一個漢字佔用兩個字節;而varchar的存儲方式是,對每個英文字符佔用2個字節,漢字也佔用2個字節,兩者的存儲數據都非unicode的字符數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章