通過char與varchar的區別,學習可變長的字符類型,charvarchar
轉自http://www.uphtm.com/database/232.html
在mysql教程中char與varchar的區別呢,都是用來存儲字符串的,只是他們的保存方式不一樣罷了,char有固定的長度,而varchar屬於可變長的字符類型。
char與varchar的區別
char (16)長度固定, 如'www.uphtm.com' 存儲需要空間 14個字符
varchar(16) 可變長 如'www.uphtm.com' 需要存儲空間 15字符,
從上面可以看得出來char 長度是固定的,不管你存儲的數據是多少他都會都固定的長度。而varchar則處可變長度但他要在總長度上加1字符,這個用來存儲位置。所以實際應用中用戶可以根據自己的數據類型來做。
再看看char,與varchar在速度上的區別吧。
mysal>create tabe ab(v varchar(4),c char(4));
query ok ,0 rows affected(0.02 sec)
mysql>insert into abc values('ab ','ab ')
query ok ,1 row affected(0.00 sec);
mysql->select concat(v ,'+') ,concat(c ,'+') form abc
ab + | ab+
1rows in set (0.00 sec)
從上面可以看出來,由於某種原因char 固定長度,所以在處理速度上要比varchar快速很多,但是對費存儲空間,所以對存儲不大,但在速度上有要求的可以使用char類型,反之可以用varchar類型來實例。
注明:
在用char字符類型時內容後面有空間時必須作相關處理,要不就會把空格自動刪除。
建意:
myisam 存儲引擎 建議使用固定長度,數據列代替可變長度的數據列。
memory存儲引擎 目前都使用固定數據行存儲,因此無論使用char varchar列都沒關系,
innodb 存儲引擎 建意使用varchar 類型。