91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中怎么求varchar最大長度

發布時間:2021-08-06 11:52:33 來源:億速云 閱讀:142 作者:Leah 欄目:數據庫

MySQL中怎么求varchar最大長度,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1、限制規則
字段的限制在字段定義的時候有以下規則:
   www.2cto.com  
a)                  存儲限制
varchar 字段是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個字節表示實際長度(長度超過255時需要2個字節),因此最大長度不能超過65535。
 
b)                  編碼長度限制
字符類型若為gbk,每個字符最多占2個字節,最大長度不能超過32766;
字符類型若為utf8,每個字符最多占3個字節,最大長度不能超過21845。
若定義的時候超過上述限制,則varchar字段會被強行轉為text類型,并產生warning。
 
c)                   行長度限制
導致實際應用中varchar長度限制的是一個行定義的長度。 MySQL要求一個行的定義長度不能超過65535。若定義的表長度超過這個值,則提示
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。
 
2、計算例子
舉兩個例說明一下實際長度的計算。
 
a)                  若一個表只有一個varchar類型,如定義為
create table t4(c varchar(N)) charset=gbk;
則此處N的最大值為(65535-1-2)/2= 32766。
減1的原因是實際行存儲從第二個字節開始’;
減2的原因是varchar頭部的2個字節表示長度;
除2的原因是字符編碼是gbk。  www.2cto.com  
 
b)                  若一個表定義為
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;
則此處N的最大值為 (65535-1-2-4-30*3)/3=21812
減1和減2與上例相同;
減4的原因是int類型的c占4個字節;
減30*3的原因是char(30)占用90個字節,編碼是utf8。
 
       如果被varchar超過上述的b規則,被強轉成text類型,則每個字段占用定義長度為11字節,當然這已經不是“varchar”了。

關于MySQL中怎么求varchar最大長度問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘阴县| 龙口市| 花垣县| 夏津县| 高要市| 衡阳市| 大同市| 石屏县| 赣州市| 剑川县| 响水县| 北碚区| 阜新| 福鼎市| 彭州市| 颍上县| 广宁县| 敦煌市| 西和县| 同心县| 新乐市| 石景山区| 惠州市| 卢氏县| 崇义县| 怀远县| 台南县| 曲松县| 南乐县| 扎赉特旗| 温泉县| 修水县| 临西县| 兴山县| 乐亭县| 光山县| 子长县| 龙泉市| 贡觉县| 枣强县| 蒙阴县|