《Mysql必讀MySQL數據庫varchar的限制規則說明》要點:
本文介紹了Mysql必讀MySQL數據庫varchar的限制規則說明,希望對您有用。如果有疑問,可以聯系我們。
MySQL數據庫中varchar最大長度是多少?其實這不是一個固定的數字,varchar的長度是有限制規則的.本文我們就來介紹一下MySQL數據庫中varchar的限制規則,并以一個實際的例子對限制規則進行了說明,接下來就讓我們一起來了解一下這部門內容.MYSQL數據庫
1、限制規矩MYSQL數據庫
字段的限制在字段界說的時候有以下規則:MYSQL數據庫
a)存儲限制MYSQL數據庫
varchar字段是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個字節表示實際長度(長度超過255時必要2個字節),因此最大長度不能超過65535.MYSQL數據庫
b)編碼長度限制MYSQL數據庫
字符類型若為gbk,每個字符最多占2個字節,最大長度不克不及超過32766;MYSQL數據庫
字符類型若為utf8,每個字符最多占3個字節,最大長度不克不及超過21845.MYSQL數據庫
若定義的時候超過上述限制,則varchar字段會被強行轉為text類型,并發生warning.MYSQL數據庫
c)行長度限制MYSQL數據庫
導致實際應用中varchar長度限制的是一個行定義的長度.MySQL要求一個行的定義長度不克不及超過65535.若定義的表長度超過這個值,則提示ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.YouhavetochangesomecolumnstoTEXTorBLOBs.MYSQL數據庫
2、計算例子MYSQL數據庫
舉兩個例闡明一下實際長度的計算.MYSQL數據庫
a)若一個表只有一個varchar類型,如定義為createtablet4(cvarchar(N))charset=gbk;則此處N的最年夜值為(65535-1-2)/2=32766.MYSQL數據庫
減1的原因是實際行存儲從第二個字節開始';MYSQL數據庫
減2的原因是varchar頭部的2個字節表現長度;MYSQL數據庫
除2的原因是字符編碼是gbk.MYSQL數據庫
b)若一個表定義為createtablet4(cint,c2char(30),c3varchar(N))charset=utf8;則此處N的最年夜值為(65535-1-2-4-30*3)/3=21812.MYSQL數據庫
減1和減2的原因與上例相同;MYSQL數據庫
減4的原因是int類型的c占4個字節;MYSQL數據庫
減30*3的原因是char(30)占用90個字節,編碼是utf8.MYSQL數據庫
如果varchar跨越上述的b規則,被強制轉成text類型,則每個字段占用定義長度為11字節,當然這已經不是“varchar”了.MYSQL數據庫
關于MySQL數據庫中varchar的限制規矩的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!MYSQL數據庫
《Mysql必讀MySQL數據庫varchar的限制規則說明》是否對您有啟發,歡迎查看更多與《Mysql必讀MySQL數據庫varchar的限制規則說明》相關教程,學精學透。維易PHP學院為您提供精彩教程。