国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL數據庫varchar的限制規則說明

2024-07-24 12:44:14
字體:
來源:轉載
供稿:網友

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的限制規則的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!

您可能感興趣的文章:

mysql中char與varchar的區別分析php判斷輸入不超過mysql的varchar字段的長度范圍Mysql varchar大小長度問題介紹mysql VARCHAR的最大長度到底是多少mysql update語句的用法詳解php+MySQL判斷update語句是否執行成功的方法mysql如何處理varchar與nvarchar類型中的特殊字符mysql中You can’t specify target table for update in FROM clause錯誤解決方法MySQL中把varchar類型轉為date類型方法詳解
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武山县| 巩留县| 黎平县| 德保县| 酒泉市| 佛山市| 崇义县| 德钦县| 沐川县| 涞源县| 同心县| 从化市| 荆门市| 饶河县| 额尔古纳市| 商水县| 抚州市| 类乌齐县| 曲阳县| 鱼台县| 万全县| 霍城县| 武邑县| 彰化市| 外汇| 北安市| 缙云县| 芜湖市| 大理市| 樟树市| 漳浦县| 长阳| 桂阳县| 无锡市| 苍溪县| 顺平县| 高邑县| 杭锦旗| 枞阳县| 沧州市| 万源市|