程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql varchar年夜小長度成績引見

Mysql varchar年夜小長度成績引見

編輯:MySQL綜合教程

Mysql varchar年夜小長度成績引見。本站提示廣大學習愛好者:(Mysql varchar年夜小長度成績引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql varchar年夜小長度成績引見正文


4.0版本以下,varchar(20),指的是20字節,假如寄存UTF8漢字時,只能存6個(每一個漢字3字節)
5.0版本以上,varchar(20),指的是20字符,不管寄存的是數字、字母照樣UTF8漢字(每一個漢字3字節),都可以寄存20個,最年夜年夜小是65532字節
Mysql4中最年夜也不外是20個字節,然則Mysql5依據編碼分歧,存儲年夜小也分歧。

1、限制規矩

字段的限制在字段界說的時刻有以下規矩:

a) 存儲限制

varchar 字段是將現實內容零丁存儲在聚簇索引以外,內容開首用1到2個字節表現現實長度(長度跨越255時須要2個字節),是以最年夜長度不克不及跨越65535。

b) 編碼長度限制

字符類型若為gbk,每一個字符最多占2個字節,最年夜長度不克不及跨越32766;

字符類型若為utf8,每一個字符最多占3個字節,最年夜長度不克不及跨越21845。

若界說的時刻跨越上述限制,則varchar字段會被強行轉為text類型,並發生warning。

c) 行長度限制

招致現實運用中varchar長度限制的是一個行界說的長度。 MySQL請求一個行的界說長度不克不及跨越65535。若界說的表長度跨越這個值,則提醒

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

2、盤算例子

舉兩個例解釋一下現實長度的盤算。

a) 若一個表只要一個varchar類型,如界說為

create table t4(c varchar(N)) charset=gbk;

則此處N的最年夜值為(65535-1-2)/2= 32766。

減1的緣由是現實行存儲從第二個字節開端';

減2的緣由是varchar頭部的2個字節表現長度;

除2的緣由是字符編碼是gbk。

b) 若一個表界說為

create table t4(c int, c2 char(30), c3 varchar(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 ”了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved