轉載來源:https://blog.csdn.net/xiaoyu19910321/article/details/52325090
1.我們經常 mysql創建 varchar(20) name這個 20長度 究竟是表示的字符數還是字節數?根編碼字符集又有沒有關係?
首先 mysql 5.X 以上的版本的 定義中 表示的字符長度,如上:varchar(20)你既可以添加20個英文字符,也可以添加二十個中文字符,即表示的是字符長度。
mysql 4.X 的版本表示的是字節長度,會根據字符集轉變 內容字節長度存儲。
對於char(10)同上。
2.關於 int(2) 中的2 ,表示的並非是int類型只能輸入2位數字,而是隻能顯示2位數字範圍,可以添加11位的int的任何數字。
3.mysql 5.X以上版本 存儲時 char最大255字節,這個和字符集是否有關係?
本人測試沒有關係,字符集是GBK或者UTF-8在char(255)下都可已添加255個字符(字母或者漢字或者都有)。
但是對於varchar類型:
參考:https://blog.csdn.net/guanmaoning/article/details/106663446
在utf-8
狀態下,漢字最多可以存 21844個字符串, 英文也爲 21844個字符串 (雖然一個英文字符實際佔用一個字節,但是utf-8定義字段時是默認以每個字符最大爲3個字節來進行計算的,所以最大爲varchar(21844))。
在gbk
狀態下,漢字最多可以存 32766個字符串,英文也爲 32766個字符串(雖然一個英文字符實際佔用一個字節,但是gbk定義字段時是默認以每個字符最大爲2個字節來進行計算的,所以最大爲varchar(32766))。