Mysql的 VARCHAR欄位最大長度到底是多少

2021-09-10 08:29:20 字數 987 閱讀 8554

mysql5.0.3之前varchar(n)這裡的n表示位元組數

mysql5.0.3之後varchar(n)這裡的n表示字元數,比如varchar(200),不管是英文還是中文都可以存放200個

(注:這兩個是完全不一樣的單位,位元組表示字元佔的多少k,字元表示乙個完整的字元)

mysql要求乙個行定義長度不能超過65535個位元組,不包括text、blob等大字段型別,varchar長度受此長度限制,和其他非大字段加起來不能超過65535個位元組.

超過以上限制則會報錯

varchar(n)占用幾個位元組跟字符集有關係:

字元型別若為gbk,每個字元占用2個位元組, 

字元型別若為utf8,每個字元最多占用3個位元組

根據字符集,字元型別若為gbk,每個字元占用2個位元組,最大長度不能超過65535/2 =32766;   字元型別若為utf8,每個字元最多占用3個位元組,最大長度不能超過 65535/3 =21845,若超過這個限制,則會自動將varchar型別轉為mediumtext或longtext,例如:

drop table if exists test1111;

create table test1111(

id char(255) null,

content varchar(63000) null

);

desc test1111;

結果:

create table `test1111` (

`id` char(255) default null,

`content` mediumtext

) engine=innodb default charset=utf8;

mysql 查詢varchar型別字段排序

首先,如果裡面存的是字母,會按 英文本母 順序排序,如果含有數字,按數字大小排序,如果含有漢字,按照所選擇的 漢字編碼 排序。一般情況下,int型別的字段可以直接使用max 函式查詢出某一列的最大值,但是對於varchar型的字段,我們有的時候需要排序或查最大值,直接用max 函式查最大值,會發現值...

Mysql中萬能的varchar欄位

很久以前,就見過乙個架構師設計資料庫時所有欄位都使用varchar型別,當時以為方便儲存和遷移,今天自己在設計欄位的時候想起了這件事情,就驗證了一下,mysql中的varchar型別,差不多能算是個萬能型別。例如 1.需要設計乙個datetime欄位型別,方便以後按時間檢索,這時可以使用varcha...

MySQL中欄位varchar和int排序的區別

首先我們建立乙個簡單的資料表,這個表只有兩個字段,id和a,a欄位的型別是int型別。我先的需求是對a欄位進行正序排列 select from test order by a asc 這個時候我們得到了想要的資料,如下圖 可是小童鞋,將a欄位建成了varchar型別,這個時候我們正序查詢,結果如下圖...