Mysql的 VARCHAR欄位最大長度到底是多少
阿新 • • 發佈:2019-01-25
如果某一項中設定的是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;