字符類型:
Char()用於保存固定長度的字符串,長度最大為255,比指定長度大的值將被截斷,比指定長度小的值會用空格填補。
Varchar()用於保存可變長度的字符串,長度最大為65535,只存儲字符串實際需要的長度,但是會用1~2個字節來存儲值得長度。如果列的最大長度小於或255,則使用1字節,否則就是2字節。
Char和varchar與字符編碼也有密切聯系,GBK占用2個字節,UTF8占用三個字節。
1. GBK字符集
解析:因為varchar類型長度大於255,所以要用2字節存儲值的長度。
計算公式:(65535-2)/ 2= 32766.5,也即是說不能大於32767
2. UTF8字符集<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20150529/2015052910185613.jpg" alt="\">
解析:因為varchar類型長度大於255,所以要用3字節存儲值的長度。
計算公式:(65535-2)/3 = 21844.3,也就是說不能大於21845
對於一個表中的多個字段:
計算公式:(65535 -4-20*2+1-8-2)/2 =32740,也就是說不能大於32740的長度。
【總結】:在什麼情況下使用char和varchar?
經常變化的值,如家庭住址長短不一,使用varchar合適。
對於固定的值和已知的值,比如md5後的32位字符類型,char(32),使用char節省空間。因為varchar還需要使用1字節進行存儲值的長度。