MySQL之vachar
5.0.3之前,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組),最大0-255個位元組。
5.0.3之後,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大大小是65532位元組(這個表所有列加起來大小)
在建表時,當超過長度限制,MySql會報錯,建議使用TEXT或者BLOB;而當INSERT資料時,如果VALUE超出VARCHAR宣告時的長度,則會自動被截斷。
varchar 欄位是將實際內容單獨儲存在聚簇索引之外,內容開頭用1到2個位元組表示實際長度(長度超過255時需要2個位元組),
另外,開頭還有1個位元組存放其它一些控制資訊。
a) 若一個表只有一個varchar型別,如定義為
create table t1(c varchar(N)) charset = gbk;
則此處N的最大值為(65535-1-2)/2= 32766。
減1的原因是實際行儲存從第二個位元組開始;
減2的原因是varchar頭部的2個位元組表示長度;
除2的原因是字元編碼是gbk。
如下圖:使用最大值32766時,正確建立。
如果若使用32767,MySql則會報出異常,建立失敗。
b) 若一個表定義為
create table t2(i int, c char(30), ch 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。
5.0.3之後,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大大小是65532位元組(這個表所有列加起來大小)
在建表時,當超過長度限制,MySql會報錯,建議使用TEXT或者BLOB;而當INSERT資料時,如果VALUE超出VARCHAR宣告時的長度,則會自動被截斷。
varchar 欄位是將實際內容單獨儲存在聚簇索引之外,內容開頭用1到2個位元組表示實際長度(長度超過255時需要2個位元組),
另外,開頭還有1個位元組存放其它一些控制資訊。
a) 若一個表只有一個varchar型別,如定義為
create table t1(c varchar(N)) charset = gbk;
則此處N的最大值為(65535-1-2)/2= 32766。
減1的原因是實際行儲存從第二個位元組開始;
減2的原因是varchar頭部的2個位元組表示長度;
除2的原因是字元編碼是gbk。
如下圖:使用最大值32766時,正確建立。
如果若使用32767,MySql則會報出異常,建立失敗。
b) 若一個表定義為
create table t2(i int, c char(30), ch 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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1191886/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL(六):MySQL之MVCCMySqlMVC
- 重返MySQL之MySQL基礎MySql
- mysql之MHAMySql
- MySQL之索引MySql索引
- mysql之\cMySql
- MySQL之order byMySql
- MySQL 之 ORDER BY FIELDMySql
- MySQL 之 USINGMySql
- mysql之 redo logMySql
- MySQL 之變數MySql變數
- MYSQL之 GroupCommitMySqlMIT
- MySQL之swap配置MySql
- MySQL之in與existsMySql
- MySQL之timestampMySql
- javaertogo之mysql操作JavaGoMySql
- MySQL預設資料庫之mysql庫MySql資料庫
- MySQL基礎之MySQL 5.7 新增配置MySql
- MySQL錯誤之mysql.slave_master_infoMySqlAST
- 【MySQL】MySQL 5.6 引數之 extra_portMySql
- 【Mysql】mysql公開課之-mysql5.7複製特性MySql
- MySQL Study之–Mysql啟動失敗“mysql.host”薦MySql
- 18 . Go之操作MysqlGoMySql
- MySQL之MGR白名單MySql
- MySQL8.0之XtraBackupMySql
- MySQL 之 show processlist 神器MySql
- MySQL之表聯結MySql
- mysql索引之字首索引MySql索引
- MySQL之臨時表MySql
- Mysql之案例分析(一)MySql
- 精通MySQL之鎖篇MySql
- MySQL學習之索引MySql索引
- MySql之EXPLAN詳解MySql
- TarsCpp 元件之 MySQL 操作元件MySql
- mysql安全之loginpathMySql
- Mysql之新增innodb支援MySql
- mysql replication之GTIDMySql
- mysql之select into outfileMySql
- MySQL學習之explainMySqlAI