1. 程式人生 > >Mysql的 VARCHAR欄位最大長度到底是多少

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

如果某一項中設定的是varchar(50)

mysql varchar(50) 不管中文 還是英文 都是存50個的

  • varchar(n),n表示什麼?

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

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

  • n最大可以是多少

  • MySQL行長度

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

超過以上限制則會報錯

  •  varchar(n)佔用幾個位元組

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

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

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

  • varchar最大長度可以是多少

根據字符集,字元型別若為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;