4. varchar 和char類型
4.1 varchar類型的存儲特點
- 用於存儲變長字符串, 只是佔用必要的存儲空間. 記得存儲的是字符爲單位. 30個字符並不代表是30個字節, 需要根據具體選擇的編碼格式來進行確定的
- 列的長度小於255則只是佔用一個額外字節用於記錄字符串的長度
- 列的長度大於255則要佔用兩個額外字節用於紀錄字符串長度
- varchar最長爲65535, 更長的話需要使用text類型
4.2 varchar的適用場景
- 字符串列的最大長度比平均長度大很多
- 字符串列很少被更新
- 使用了多字節字符集存儲的字符串
備註: 在MySQL中更改數據存儲類型, 字段長度都會造成鎖表. 在繁忙的系統中都會產生極大的災難. 但是對於varchar來說如果是在255字節內任意更改大小不會進行鎖表. 因爲不需要新增額外的字節來存儲varchar的長度
4.3 char類型的存儲特點
- char類型是定長的
- 字符串存儲在char類型的列中會刪除末尾的空格
- char類型的最大寬度爲255
4.4 char類型的適用場景
- char類型適合存儲長度近似的值(例如MD5加密後的字符串, 固定的主鍵ID)
- char類型適合存儲短字符串(例如: 性別男女)
- char類型適合存儲經常更新的字符串列