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,但這二者的選擇有時候讓人很糾結,現總結一下二者的區別:mysql
(1)CHAR的長度是固定的,而VARCHAR的長度是能夠變化的。sql
好比,存儲字符串「mysql",對於CHAR(10),表示你存儲的字符串將佔10個字節(包括5個空字符)。數據庫
而一樣的VARCHAR (10)則只佔用5個字節的長度,10只是其最大值限制,當你存儲的字符小於10時,按實際長度存儲。spa
(2)CHAR的效率比VARCHAR的效率稍高。code
取數據的時候,char類型的要用trim()去掉多餘的空格,而varchar是不須要的。blog
儘管如此,char的存取數度仍是要比varchar要快得多,由於其長度固定,方便程序的存儲與查找;unicode
可是,char也爲此付出的是空間的代價,由於其長度固定,因此不免會有多餘的空格佔位符佔據空間,可謂是以空間換取時間效率,而varchar是以空間效率爲首位的。字符串
(3)CHAR(10)若輸入數據的字符數小於10,則系統自動在其後添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。VARCHAR(10)數據類型的存儲長度爲實際數值長度。string
(4)char的存儲方式是,對英文字符(ASCII)佔用1個字節,對一個漢字佔用兩個字節;而varchar的存儲方式是,對每一個英文字符佔用2個字節,漢字也佔用2個字節,二者的存儲數據都非unicode的字符數據。class
Good Good Study, Day Day Up.
順序 選擇 循環 總結