DROP TABLE test_string; CREATE TABLE test_string (col_char CHAR(10), col_varchar VARCHAR(10)); INSERT INTO `test_string` VALUES ('mysql', 'mysql');
在創建數據庫表時,為了給一個string類型的數據定義一個數據庫中的數據類型,一般參考的都是char或varchar,但這兩者的選擇有時候讓人很糾結,現總結一下兩者的區別:
(1)CHAR的長度是固定的,而VARCHAR的長度是可以變化的。
比如,存儲字符串“mysql",對於CHAR(10),表示你存儲的字符串將占10個字節(包括5個空字符)。
而同樣的VARCHAR (10)則只占用5個字節的長度,10只是其最大值限制,當你存儲的字符小於10時,按實際長度存儲。
(2)CHAR的效率比VARCHAR的效率稍高。
取數據的時候,char類型的要用trim()去掉多余的空格,而varchar是不需要的。
盡管如此,char的存取數度還是要比varchar要快得多,因為其長度固定,方便程序的存儲與查找;
但是,char也為此付出的是空間的代價,因為其長度固定,所以難免會有多余的空格占位符占據空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。
(3)CHAR(10)若輸入數據的字符數小於10,則系統自動在其后添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。VARCHAR(10)數據類型的存儲長度為實際數值長度。
(4)char的存儲方式是,對英文字符(ASCII)占用1個字節,對一個漢字占用兩個字節;而varchar的存儲方式是,對每個英文字符占用2個字節,漢字也占用2個字節,兩者的存儲數據都非unicode的字符數據。
Good Good Study, Day Day Up.
順序 選擇 循環 總結