程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫varchar的限制規矩解釋

MySQL數據庫varchar的限制規矩解釋

編輯:MySQL綜合教程

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的限制規矩的常識就引見到這裡了,願望本次的引見可以或許對您有所收成!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved