婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Mysql中varchar類型一些需要注意的地方

Mysql中varchar類型一些需要注意的地方

熱門標(biāo)簽:武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 百應(yīng)電話機(jī)器人優(yōu)勢 外呼系統(tǒng)打電話上限是多少 電話外呼系統(tǒng)改號 怎樣在地圖標(biāo)注銷售區(qū)域 曲靖移動(dòng)外呼系統(tǒng)公司 啥是企業(yè)400電話辦理 南昌三維地圖標(biāo)注 地圖標(biāo)注費(fèi)用是多少

varchar的存儲規(guī)則

4.0版本以下,varchar(20),指的是20字節(jié),如果存放UTF8漢字時(shí),只能存6個(gè)(每個(gè)漢字3字節(jié))。
5.0版本以上,varchar(20),指的是20字符,無論存放的是數(shù)字、字母還是UTF8漢字(每個(gè)漢字3字節(jié)),都可以存放20個(gè),最大大小是65532字節(jié)。
varchar 字段是將實(shí)際內(nèi)容單獨(dú)存儲在聚簇索引之外,內(nèi)容開頭用1到2個(gè)字節(jié)表示實(shí)際長度。
官方是這么說的:

Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
In contrast to CHAR, VARCHAR values are stored as a one-byte or two-byte length prefix plus data. The length prefix indicates the number of bytes in the value.
A column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes.

varchar和char 的區(qū)別

區(qū)別一,定長和變長

char 表示定長,長度固定,varchar表示變長,即長度可變。當(dāng)所插入的字符串超出它們的長度時(shí),視情況來處理,如果是嚴(yán)格模式,則會(huì)拒絕插入并提示錯(cuò)誤信息,如果是寬松模式,則會(huì)截取然后插入。如果插入的字符串長度小于定義長度時(shí),則會(huì)以不同的方式來處理,如char(10),表示存儲的是10個(gè)字符,無論你插入的是多少,都是10個(gè),如果少于10個(gè),則用空格填滿。而varchar(10),小于10個(gè)的話,則插入多少個(gè)字符就存多少個(gè)。
varchar怎么知道所存儲字符串的長度呢?實(shí)際上,對于varchar字段來說,需要使用一個(gè)(如果字符串長度小于255)或兩個(gè)字節(jié)(長度大于255)來存儲字符串的長度。但是因?yàn)樗枰幸粋€(gè)prefix來表示他具體bytes數(shù)是多少(因?yàn)関archar是變長的,沒有這個(gè)長度值他不知道如何讀取數(shù)據(jù))。

區(qū)別之二,存儲的容量不同

對 char 來說,最多能存放的字符個(gè)數(shù) 255,和編碼無關(guān)。
而 varchar 呢,最多能存放 65532 個(gè)字符。VARCHAR 的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是 65,532字節(jié)

varchar的編碼長度限制

字符類型若為 gbk,則個(gè)字符最多占2個(gè)字節(jié),最大長度不能超過32766; 字符類型若為utf8,則每個(gè)字符最多占3個(gè)字節(jié),最大長度不能超過21845。 若定義的時(shí)候超過上述限制,則varchar字段會(huì)被強(qiáng)行轉(zhuǎn)為text類型,并產(chǎn)生warning。

行長度限制

導(dǎo)致實(shí)際應(yīng)用中varchar長度限制的是一個(gè)行定義的長度。 MySQL要求一個(gè)行的定義長度不能超過65535。若定義的表長度超過這個(gè)值,則提示 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。
這就是說,比如創(chuàng)建一個(gè)表,表結(jié)構(gòu)中有兩個(gè)varhcar類型字段,那么這兩個(gè)字段的總長度不能超過65535。
官方說明如下:

Every table has a maximum row size of 65,535 bytes.
This maximum applies to all storage engines, but a given engine might have additional constraints that result in a lower effective maximum row size.

varchar的控制位

MySQL 中的Varchar字符類型還保留了1個(gè)字節(jié)來留其它控制信息。

示例

示例一:若一張表中只有一個(gè)字段VARCHAR(N)類型,utf8編碼,則N最大值為多少?

如:create table tb_name1(a varchar(N)) default charset=utf8,則N最大值=(65535-1-2)/3=21844。
減1的原因是實(shí)際行存儲從第二個(gè)字節(jié)開始。
減2的原因是varchar頭部的2個(gè)字節(jié)表示長度。
除3的原因是字符編碼是utf8。
sql測試:

create table tb_name1(a varchar(21844)) default charset=utf8;
Query OK, 0 rows affected (0.38 sec)

drop table tb_name1;
Query OK, 0 rows affected (0.00 sec)

create table tb_name1(a varchar(21845)) default charset=utf8;
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 

示例二:若一張表中有一個(gè)字段VARCHAR(N)類型,并且有其它的字段類型,utf8編碼,則N的最大值為多少?

如:create table tb_name2(a int, b char(20), c varchar(N)) default charset=utf8;
則:N最大值=(65535-1-2-4-203)/3=21822
減1的原因是實(shí)際行存儲從第二個(gè)字節(jié)開始。
減2的原因是varchar頭部的2個(gè)字節(jié)表示長度。
減4的原因是a字段的int類型占4個(gè)字節(jié)。
減203的原因是char(20)占用60個(gè)字節(jié),編碼是utf8。

sql測試:

create table tb_name2(a int, b char(20), c varchar(21822)) default charset=utf8;
Query OK, 0 rows affected (0.28 sec)

drop table tb_name2;
Query OK, 0 rows affected (0.20 sec)

create table tb_name2(a int, b char(20), c varchar(21823)) default charset=utf8;
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

示例三:若一張表中有多字段VARCHAR(N)類型,并且有其它的字段類型,gbk編碼,則N的最大值為多少?

如:create table tb_name3(a int, b char(20), c varchar(50), d varchar(N)) default charset=gbk;
則:N最大值=(65535-1-1-2-4-202-502)/2=32693
第一個(gè)減1的原因是實(shí)際行存儲從第二個(gè)字節(jié)開始。
第二個(gè)減1表示第二個(gè)varchar(50)頭部一個(gè)1個(gè)字節(jié)表示長度(小于255)。
減2的原因是varchar頭部的2個(gè)字節(jié)表示長度。
減202的原因是char(20)占用40個(gè)字節(jié),編碼是gbk。
減502的原因是varchar(50)占用100個(gè)字節(jié),編碼是gbk。

SQL測試:

create table tb_name3(a int, b char(20), c varchar(50), d varchar(32694)) default charset=gbk;
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
create table tb_name3(a int, b char(20), c varchar(50), d varchar(32693)) default charset=gbk;
Query OK, 0 rows affected (0.18 sec)

以上就是Mysql中varchar類型一些需要注意的地方的詳細(xì)內(nèi)容,更多關(guān)于Mysql varchar類型的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL CHAR和VARCHAR該如何選擇
  • MySQL CHAR和VARCHAR存儲、讀取時(shí)的差別
  • MYSQL中 char 和 varchar的區(qū)別
  • MySQL中字段類型char、varchar和text的區(qū)別
  • mysql varchar類型求和實(shí)例操作
  • 對比MySQL中int、char以及varchar的性能
  • MySQL動(dòng)態(tài)修改varchar長度的方法
  • Mysql中varchar長度設(shè)置方法
  • Mysql數(shù)據(jù)庫中把varchar類型轉(zhuǎn)化為int類型的方法
  • mysql如何處理varchar與nvarchar類型中的特殊字符
  • 當(dāng)面試官問mysql中char與varchar的區(qū)別

標(biāo)簽:錦州 滄州 黑河 隨州 甘南 資陽 吉林 荊州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql中varchar類型一些需要注意的地方》,本文關(guān)鍵詞  Mysql,中,varchar,類型,一些,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql中varchar類型一些需要注意的地方》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql中varchar類型一些需要注意的地方的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91精选在线观看| 蜜臀av一区二区在线观看| 欧美曰成人黄网| 久久精工是国产品牌吗| 日韩精品一级二级| 欧美日韩专区在线| 欧美高清视频不卡网| 91精品国产乱码| 五月婷婷久久丁香| 精品一区精品二区高清| 欧美精品一区二区不卡| 亚洲色欲色欲www| 日韩精品91亚洲二区在线观看| 日本道色综合久久| 久久综合九色欧美综合狠狠| 在线免费亚洲电影| 亚洲v中文字幕| 国产成人精品www牛牛影视| 久久久精品免费网站| 亚洲国产成人av网| 成人一二三区视频| 综合久久给合久久狠狠狠97色| 日韩电影网1区2区| 久久久久久一二三区| 天天av天天翘天天综合网 | 欧美一区二区三区精品| 久久久www成人免费无遮挡大片| 成人免费视频一区二区| 在线成人av影院| 国产综合一区二区| 欧美高清在线一区二区| 免费不卡在线观看| 国产精品久久久久久久岛一牛影视 | 欧美日韩精品欧美日韩精品| 欧美午夜精品一区| 狠狠色丁香婷综合久久| 欧美一区二区在线不卡| 成人免费高清在线观看| 精品国产乱码久久久久久久久| 国产三级欧美三级日产三级99 | 91视频观看视频| 国产丝袜美腿一区二区三区| 韩国女主播成人在线| 精品国产一区二区精华| 亚洲免费观看高清完整版在线观看 | 蜜臀久久久99精品久久久久久| 久久免费电影网| 欧美午夜精品久久久| 亚洲人一二三区| 欧美久久久久久久久中文字幕| 国内久久精品视频| 久久一留热品黄| 欧美日韩精品一区视频| 青青草91视频| 精品裸体舞一区二区三区| 日本高清不卡在线观看| 日韩av在线免费观看不卡| 狠狠狠色丁香婷婷综合久久五月| 欧美高清在线一区二区| www.欧美日韩| 91精品国产综合久久婷婷香蕉 | 欧美日韩精品专区| 99精品国产99久久久久久白柏| 中文字幕国产一区| 色先锋资源久久综合| 高清久久久久久| 中文字幕精品一区| 亚洲精品在线免费播放| 成人高清视频在线观看| 国产精品久久久久一区二区三区| 日韩免费在线观看| 成人午夜av影视| 精品三级在线看| 欧美成人vps| 777亚洲妇女| 国产一区中文字幕| 日韩黄色一级片| 午夜精品久久一牛影视| 91精品国产欧美一区二区| 欧美日韩成人综合| 欧美日韩在线不卡| 激情久久五月天| 亚洲欧美另类综合偷拍| 91在线一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美日韩精品一区二区三区四区 | 欧美极品aⅴ影院| www国产精品av| 99久久99久久精品免费观看| 99热在这里有精品免费| 婷婷综合另类小说色区| 久久这里只有精品首页| 亚洲精品欧美专区| 欧美巨大另类极品videosbest| 午夜久久电影网| 日韩精品一二三四| 国产精品私人自拍| 亚洲婷婷综合久久一本伊一区 | 日韩亚洲欧美综合| 日韩一级在线观看| 一本久久精品一区二区| 欧美在线观看一区| bt欧美亚洲午夜电影天堂| 成人欧美一区二区三区1314| 亚洲.国产.中文慕字在线| 91黄色免费看| 精品一区二区三区欧美| 这里是久久伊人| 国产精品亚洲一区二区三区在线| 精品国内二区三区| 久久久久久久久一| 91麻豆精品国产91久久久久久| 欧美成人aa大片| 91麻豆精品国产无毒不卡在线观看| 性做久久久久久久久| 日本一不卡视频| 亚洲综合一二三区| 国产精品一区久久久久| 免费不卡在线观看| 午夜精品福利视频网站| 粉嫩一区二区三区在线看| 成人深夜在线观看| 久久久亚洲综合| 国产成人免费视频网站| 精品一二三四区| 国产一区欧美二区| 亚洲美女淫视频| 免费看欧美女人艹b| 五月天一区二区三区| 日韩一区二区免费高清| 一区二区三区不卡视频| 亚洲黄一区二区三区| 国产91精品一区二区麻豆网站| 成人免费视频国产在线观看| 国产精品18久久久久久久网站| 欧美一级片在线看| 久久影院电视剧免费观看| 亚洲老司机在线| 国产福利一区二区三区视频| 777xxx欧美| 亚洲女性喷水在线观看一区| 午夜久久久久久| 亚洲国产经典视频| 国产一区二区成人久久免费影院| 国产99久久久久久免费看农村| 亚洲国产精品成人综合色在线婷婷| 色琪琪一区二区三区亚洲区| 国产精品激情偷乱一区二区∴| 亚洲欧美日韩一区二区三区在线观看| 洋洋成人永久网站入口| 美女在线视频一区| 高清视频一区二区| 欧美精品国产精品| 国产亚洲午夜高清国产拍精品| 久久aⅴ国产欧美74aaa| 大胆亚洲人体视频| 国产精品麻豆一区二区| 日本vs亚洲vs韩国一区三区二区| 国产麻豆91精品| 中文字幕av一区二区三区免费看| 亚洲欧美在线观看| 久久久91精品国产一区二区三区| 激情六月婷婷久久| 欧美日韩日日夜夜| 久久国产精品72免费观看| 色美美综合视频| 欧美三级电影网| 久久超碰97人人做人人爱| 91色|porny| 亚洲1区2区3区视频| 不卡视频免费播放| 欧美顶级少妇做爰| 一区二区三区国产精华| 黄色日韩三级电影| 中文字幕永久在线不卡| 国产一区二区三区不卡在线观看 | 久久综合久久综合久久| 亚洲一区二区三区四区五区黄 | 欧美伊人久久大香线蕉综合69| 一区二区三区欧美亚洲| 国产精品99久| 国产精品77777| 偷窥国产亚洲免费视频| 欧美性高清videossexo| 国产麻豆精品95视频| 精品国产免费久久| 欧美精品一区二区三区一线天视频 | 日本不卡1234视频| 日韩中文字幕区一区有砖一区 | 国产精品久久久久久久久免费桃花| 91久久精品一区二区三区| 国产精品久久夜| 欧美一区二区国产| 男男gaygay亚洲| 欧美性受xxxx黑人xyx性爽| 国产一区二区不卡| 国产日韩精品一区二区浪潮av| 欧美乱熟臀69xxxxxx| 日韩av二区在线播放| 欧美大片在线观看一区二区|