這篇文章主要介紹“MySQL數(shù)據(jù)庫中的varchar限制規(guī)則是什么”,在日常操作中,相信很多人在MySQL數(shù)據(jù)庫中的varchar限制規(guī)則是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL數(shù)據(jù)庫中的varchar限制規(guī)則是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
10年專注建站、設計、互聯(lián)網(wǎng)產(chǎn)品定制開發(fā)服務,業(yè)務涵蓋成都品牌網(wǎng)站建設、商城開發(fā)、小程序設計、軟件系統(tǒng)開發(fā)、成都app開發(fā)等。憑借多年豐富的經(jīng)驗,我們會仔細了解每個客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務,以推動各中小企業(yè)全面信息數(shù)字化,并利用創(chuàng)新技術幫助各行業(yè)提升企業(yè)形象和運營效率。
1、限制規(guī)則
字段的限制在字段定義的時候有以下規(guī)則:
a)存儲限制
varchar字段是將實際內容單獨存儲在聚簇索引之外,內容開頭用1到2個字節(jié)表示實際長度(長度超過255時需要2個字節(jié)),因此最大長度不能超過65535。
b)編碼長度限制
字符類型若為gbk,每個字符最多占2個字節(jié),最大長度不能超過32766;
字符類型若為utf8,每個字符最多占3個字節(jié),最大長度不能超過21845。
若定義的時候超過上述限制,則varchar字段會被強行轉為text類型,并產(chǎn)生warning。
c)行長度限制
導致實際應用中varchar長度限制的是一個行定義的長度。MySQL要求一個行的定義長度不能超過65535。若定義的表長度超過這個值,則提示ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.YouhavetochangesomecolumnstoTEXTorBLOBs。
MySQL數(shù)據(jù)庫中varchar的限制規(guī)則是什么
2、計算例子
舉兩個例說明一下實際長度的計算。
a)若一個表只有一個varchar類型,如定義為createtablet4(cvarchar(N))charset=gbk;則此處N的最大值為(65535-1-2)/2=32766。
減1的原因是實際行存儲從第二個字節(jié)開始’;
減2的原因是varchar頭部的2個字節(jié)表示長度;
除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個字節(jié);
減30*3的原因是char(30)占用90個字節(jié),編碼是utf8。
如果varchar超過上述的b規(guī)則,被強制轉成text類型,則每個字段占用定義長度為11字節(jié),當然這已經(jīng)不是“varchar”了。
到此,關于“MySQL數(shù)據(jù)庫中的varchar限制規(guī)則是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站名稱:MySQL數(shù)據(jù)庫中的varchar限制規(guī)則是什么
轉載來于:http://chinadenli.net/article16/gidddg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、動態(tài)網(wǎng)站、電子商務、建站公司、網(wǎng)站制作、網(wǎng)站內鏈
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)