真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

char和varchar差異

字符與字節(jié)的區(qū)別(查閱引用)

成都創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、成都小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!

①ASCII碼中,一個(gè)英文字母(不分大小寫)占一個(gè)字節(jié)的空間,一個(gè)中文漢字占兩個(gè)字節(jié)的空間。一個(gè)二進(jìn)制數(shù)字序列,在計(jì)算機(jī)中作為一個(gè)數(shù)字單元,一般為8位二進(jìn)制數(shù),換算為十進(jìn)制。最小值0,最大值255。

②UTF-8編碼中,一個(gè)英文字符等于一個(gè)字節(jié),一個(gè)中文(含繁體)等于三個(gè)字節(jié)。

③Unicode編碼中,一個(gè)英文等于兩個(gè)字節(jié),一個(gè)中文(含繁體)等于兩個(gè)字節(jié)。

符號(hào):英文標(biāo)點(diǎn)占一個(gè)字節(jié),中文標(biāo)點(diǎn)占兩個(gè)字節(jié)。舉例:英文句號(hào)“.”占1個(gè)字節(jié)的大小,中文句號(hào)“。”占2個(gè)字節(jié)的大小。

④UTF-16編碼中,一個(gè)英文字母字符或一個(gè)漢字字符存儲(chǔ)都需要2個(gè)字節(jié)(Unicode擴(kuò)展區(qū)的一些漢字存儲(chǔ)需要4個(gè)字節(jié))。

⑤UTF-32編碼中,世界上任何字符的存儲(chǔ)都需要4個(gè)字節(jié)。

字節(jié)(Byte)是一種計(jì)量單位,表示數(shù)據(jù)量多少,它是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位。

字符是指計(jì)算機(jī)中使用的文字和符號(hào),比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。

存數(shù)據(jù)時(shí)的區(qū)別

char定義的是固定長(zhǎng)度,長(zhǎng)度范圍為0-255,存儲(chǔ)時(shí),如果字符數(shù)沒有達(dá)到定義的位數(shù),會(huì)在后面用空格補(bǔ)全存入數(shù)據(jù)庫(kù)中。char最多能存放255個(gè)字符個(gè)數(shù),和編碼無關(guān)。
varchar是變長(zhǎng)長(zhǎng)度,長(zhǎng)度范圍為0-65535,存儲(chǔ)時(shí),如果字符沒有達(dá)到定義的位數(shù),也不會(huì)在后面補(bǔ)空格。對(duì)于varchar,理論上最多能存放65535個(gè)字符,varchar 字段是將實(shí)際內(nèi)容單獨(dú)存儲(chǔ)在聚簇索引之外,內(nèi)容開頭用1到2個(gè)字節(jié)表示實(shí)際長(zhǎng)度(長(zhǎng)度超過255時(shí)需要2個(gè)字節(jié)),因此最大長(zhǎng)度不能超過65535字符。當(dāng)用到utf-8編碼時(shí)候最多可以存21844個(gè)字符,在gbk編碼下最多可以有32766個(gè)字符,Latin1 一個(gè)字符占一個(gè)字節(jié),最多能存放 65532 個(gè)字符。
GBK編碼計(jì)算方式:
若一個(gè)表只有一個(gè)varchar類型:
char和varchar差異
32766=(65535-1-2)/2。
減1的原因是實(shí)際存儲(chǔ)從第二字節(jié)開始;
減2的原因是varchar頭部的2個(gè)字節(jié)表示長(zhǎng)度;
除2的原因是字符編碼是gbk;
UTF8計(jì)算方式:
char和varchar差異
32766=(65535-1-2)/3。
減1的原因是實(shí)際存儲(chǔ)從第二字節(jié)開始;
減2的原因是varchar頭部的2個(gè)字節(jié)表示長(zhǎng)度;
實(shí)際例子:
create table t11(c int, c2 char(30), c3 varchar(21812)) charset=utf8;
char和varchar差異
減1的原因是實(shí)際存儲(chǔ)從第二字節(jié)開始;
減2的原因是varchar頭部的2個(gè)字節(jié)表示長(zhǎng)度;
減4的原因是int類型的c占4個(gè)字節(jié);
減30*3的原因是char(30)占用90個(gè)字節(jié),編碼是utf8。

取數(shù)據(jù)區(qū)別
數(shù)據(jù)庫(kù)取char字段的數(shù)據(jù)的時(shí)候會(huì)把空格去掉,但是在取varchar字段的數(shù)據(jù)時(shí),數(shù)據(jù)的尾部空格會(huì)保留
char和varchar差異
char和varchar差異

char和varchar差異

存儲(chǔ)引擎對(duì)于選擇CHAR和VARCHAR的影響:
對(duì)于MyISAM存儲(chǔ)引擎:最好使用固定長(zhǎng)度的數(shù)據(jù)列代替可變長(zhǎng)度的數(shù)據(jù)列。這樣可以使 整個(gè)表靜態(tài)化,從而使數(shù)據(jù)檢索更快,用空間換時(shí)間。
對(duì)于InnoDB存儲(chǔ)引擎:使用可變長(zhǎng)度的數(shù)據(jù)列,因?yàn)镮nnoDB數(shù)據(jù)表的存儲(chǔ)格式不分固定 長(zhǎng)度和可變長(zhǎng)度,因此使用CHAR不一定比使用VARCHAR更好,但由于VARCHAR是按照 實(shí)際的長(zhǎng)度存儲(chǔ),比較節(jié)省空間,所以對(duì)磁盤I/O和數(shù)據(jù)存儲(chǔ)總量比較好。


分享題目:char和varchar差異
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/pscdoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部