MySQL數據庫varchar的限制規矩解釋。本站提示廣大學習愛好者:(MySQL數據庫varchar的限制規矩解釋)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL數據庫varchar的限制規矩解釋正文
MySQL數據庫中varchar最年夜長度是若干?其實這不是一個固定的數字,varchar的長度是有限制規矩的。本文我們就來引見一下MySQL數據庫中varchar的限制規矩,並以一個現實的例子對限制規矩停止了解釋,接上去就讓我們一路來懂得一下這部門內容。
1、限制規矩
字段的限制在字段界說的時刻有以下規矩:
a)存儲限制
varchar字段是將現實內容零丁存儲在聚簇索引以外,內容開首用1到2個字節表現現實長度(長度跨越255時須要2個字節),是以最年夜長度不克不及跨越65535。
b)編碼長度限制
字符類型若為gbk,每一個字符最多占2個字節,最年夜長度不克不及跨越32766;
字符類型若為utf8,每一個字符最多占3個字節,最年夜長度不克不及跨越21845。
若界說的時刻跨越上述限制,則varchar字段會被強行轉為text類型,並發生warning。
c)行長度限制
招致現實運用中varchar長度限制的是一個行界說的長度。MySQL請求一個行的界說長度不克不及跨越65535。若界說的表長度跨越這個值,則提醒ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.YouhavetochangesomecolumnstoTEXTorBLOBs。
2、盤算例子
舉兩個例解釋一下現實長度的盤算。
a)若一個表只要一個varchar類型,如界說為createtablet4(cvarchar(N))charset=gbk;則此處N的最年夜值為(65535-1-2)/2=32766。
減1的緣由是現實行存儲從第二個字節開端';
減2的緣由是varchar頭部的2個字節表現長度;
除2的緣由是字符編碼是gbk。
b)若一個表界說為createtablet4(cint,c2char(30),c3varchar(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的限制規矩的常識就引見到這裡了,願望本次的引見可以或許對您有所收成!