校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > MySQL CHAR和VARCHAR存儲(chǔ)、讀取時(shí)的差別

MySQL CHAR和VARCHAR存儲(chǔ)、讀取時(shí)的差別

熱門(mén)標(biāo)簽:日照旅游地圖標(biāo)注 百度地圖圖標(biāo)標(biāo)注中心 石家莊電商外呼系統(tǒng) 芒果電話機(jī)器人自動(dòng)化 信陽(yáng)穩(wěn)定外呼系統(tǒng)運(yùn)營(yíng)商 廣東人工電話機(jī)器人 申請(qǐng)外呼電話線路 湖南人工外呼系統(tǒng)多少錢(qián) 南通自動(dòng)外呼系統(tǒng)軟件

導(dǎo)讀

你真的知道CHAR和VARCHAR類型在存儲(chǔ)和讀取時(shí)的區(qū)別嗎?

還是先拋幾條結(jié)論吧:

1、存儲(chǔ)的時(shí)候,CHAR總是會(huì)補(bǔ)足空格后再存儲(chǔ),不管用戶插入數(shù)據(jù)時(shí)尾部有沒(méi)有包含空格。

2、存儲(chǔ)的時(shí)候,VARCHAR不會(huì)先補(bǔ)足空格后再存儲(chǔ),但如果是用戶在插入時(shí)特地加了空格那就會(huì)如實(shí)存儲(chǔ),而不會(huì)給刪除。

3、讀取數(shù)據(jù)時(shí),CHAR總是會(huì)刪除尾部空格(哪怕是寫(xiě)入時(shí)包含空格)。

4、讀取數(shù)據(jù)時(shí),VARCHAR總是如實(shí)取出之前存入的值(如果存儲(chǔ)時(shí)尾部包含空格,就會(huì)繼續(xù)保留著,不會(huì)像CHAR那樣刪除尾部空格)。

下面是測(cè)試驗(yàn)證過(guò)程。

1、測(cè)試CHAR類型

表結(jié)構(gòu):

CREATE TABLE `tchar` (
 `id` int(10) unsigned NOT NULL DEFAULT '0',
 `c1` char(20) NOT NULL DEFAULT '',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入幾條記錄:

insert into tchar values (1, concat('a', repeat(' ',19)));
insert into tchar values (2, concat(' ', repeat('a',19)));
insert into tchar values (3, 'a');
insert into tchar values (4, ' ');
insert into tchar values (5, '');

查看存儲(chǔ)結(jié)構(gòu):

(1) INFIMUM record offset:99 heapno:0 ...
(2) SUPREMUM record offset:112 heapno:1 ...
(3) normal record offset:126 heapno:2 ... - id=1
(4) normal record offset:169 heapno:3 ... - id=2
(5) normal record offset:212 heapno:4 ... - id=3
(6) normal record offset:255 heapno:5 ... - id=4
(7) normal record offset:298 heapno:6 ... - id=5

看到這坨東西有點(diǎn)懵是不是,還記得我給你們安利過(guò)的一個(gè)工具不,看這里:innblock | InnoDB page觀察利器。

可以看到,無(wú)論我們存儲(chǔ)多長(zhǎng)的字符串進(jìn)去,每條記錄實(shí)際都是占用43(169-126=43)字節(jié)。由此結(jié)論1成立。
簡(jiǎn)單說(shuō)下,43字節(jié)的由來(lái):
DB_TRX_ID, 6字節(jié)。
DB_ROLL_PTR, 7字節(jié)。
id, int, 4字節(jié)。
c1, char(20), 20字節(jié);因?yàn)槭荂HAR類型,還需要額外1字節(jié)。
每條記錄總是需要額外5字節(jié)頭信息(row header)。
這樣總的加起來(lái)就是43字節(jié)了。

再看下讀取tchar表的結(jié)果:

select id,concat('000',c1,'$$$'),length(c1) from tchar ;
+----+----------------------------+------------+
| id | concat('000',c1,'$$$')  | length(c1) |
+----+----------------------------+------------+
| 1 | 000a$$$     |   1 | - 刪除尾部空格
| 2 | 000 aaaaaaaaaaaaaaaaaaa$$$ |   20 |
| 3 | 000a$$$     |   1 |
| 4 | 000$$$      |   0 | - 刪除尾部空格,結(jié)果和id=5一樣
| 5 | 000$$$      |   0 |
+----+----------------------------+------------+

2、測(cè)試VARCHAR類型

表結(jié)構(gòu):

CREATE TABLE `tvarchar` (
 `id` int(10) unsigned NOT NULL DEFAULT '0',
 `c1` varchar(20) NOT NULL DEFAULT '',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

插入幾條記錄:

insert into tvarchar values (1, concat('a', repeat(' ',19)));
insert into tvarchar values (2, concat(' ', repeat('a',19)));
insert into tvarchar values (3, 'a');
insert into tvarchar values (4, ' ');
insert into tvarchar values (5, '');
insert into tvarchar values (6, '');

查看存儲(chǔ)結(jié)構(gòu):

(1) INFIMUM record offset:99 heapno:0 ...
(2) SUPREMUM record offset:112 heapno:1 ...
(3) normal record offset:126 heapno:2 ... - id=1
(4) normal record offset:169 heapno:3 ... - id=2
(5) normal record offset:212 heapno:4 ... - id=3
(6) normal record offset:236 heapno:5 ... - id=4
(7) normal record offset:260 heapno:6 ... - id=5
(8) normal record offset:283 heapno:7 ... - id=6

可以看到,幾條記錄的字節(jié)數(shù)分別是:43、43、24、24、23、23(最后一條記錄和id=5那條記錄一樣)。
對(duì)上面這個(gè)結(jié)果有點(diǎn)詫異是不是,尤其是id=1的記錄(插入的是'a…后面19個(gè)空格'),居然也要消耗43字節(jié),這就佐證了上面的結(jié)論2。
同樣的,id=3和id=4這兩條記錄都是占用24字節(jié),而id=5和id=6這兩條記錄都是占用23字節(jié)(沒(méi)有額外存儲(chǔ)字符串的字節(jié)數(shù),只有id列4個(gè)字節(jié))。

再看下讀取tvarchar表的結(jié)果:

select id,concat('000',c1,'$$$'),length(c1) from tvarchar;
+----+----------------------------+------------+
| id | concat('000',c1,'$$$')  | length(c1) |
+----+----------------------------+------------+
| 1 | 000a     $$$ |   20 | - 讀取結(jié)果中沒(méi)有刪除尾部的空格
| 2 | 000 aaaaaaaaaaaaaaaaaaa$$$ |   20 |
| 3 | 000a$$$     |   1 |
| 4 | 000 $$$     |   1 | - 讀取結(jié)果中沒(méi)有刪除此空格
| 5 | 000$$$      |   0 |
| 6 | 000$$$      |   0 |
+----+----------------------------+------------+

總的來(lái)說(shuō),可以總結(jié)成兩條結(jié)論:
1、從讀取的結(jié)果來(lái)看,CHAR類型列看起來(lái)像是在存儲(chǔ)時(shí)把空格給吃了,但實(shí)際上只是在讀取時(shí)才給吃了(顯示層面上把空格刪除了)。
2、從讀取的結(jié)果來(lái)看,VARCHAR類型列看起來(lái)像是反倒保留了多余的空格,實(shí)際上也是只在讀取時(shí)才恢復(fù)這些空格(但實(shí)際物理存儲(chǔ)時(shí)還是會(huì)刪掉這些空格)。

最后,來(lái)看下文檔里怎么說(shuō)的:

When CHAR values are stored, they are right-padded with spaces to the
specified length. 簡(jiǎn)言之,CHAR列在存儲(chǔ)時(shí)尾部加空格補(bǔ)齊長(zhǎng)度。

When CHAR values are retrieved, trailing spaces are removed unless the
PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.
簡(jiǎn)言之,CHAR列在讀取時(shí)會(huì)去掉尾部空格,除非設(shè)置sql_mode值PAD_CHAR_TO_FULL_LENGTH=1。

VARCHAR values are not padded when they are stored.
簡(jiǎn)言之,存VARCHAR時(shí)尾部不加空格。

Trailing spaces are retained when values are stored and retrieved, in
conformance with standard SQL. 簡(jiǎn)言之,讀取VARCHAR時(shí)會(huì)顯示空格。

以上測(cè)試使用的版本及環(huán)境:

mysql> select version()\G
...
version(): 8.0.15

mysql> select @@sql_mode\G
...
@@sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

參考文檔

11.4.1 The CHAR and VARCHAR Types,https://dev.mysql.com/doc/refman/5.7/en/char.html

以上就是MySQL CHAR和VARCHAR存儲(chǔ)的差別的詳細(xì)內(nèi)容,更多關(guān)于MySQL CHAR和VARCHAR的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

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

標(biāo)簽:阿里 合肥 沈陽(yáng) 呼和浩特 天津 牡丹江 公主嶺 惠州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL CHAR和VARCHAR存儲(chǔ)、讀取時(shí)的差別》,本文關(guān)鍵詞  MySQL,CHAR,和,VARCHAR,存儲(chǔ),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL CHAR和VARCHAR存儲(chǔ)、讀取時(shí)的差別》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL CHAR和VARCHAR存儲(chǔ)、讀取時(shí)的差別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一本大道久久a久久精二百| 亚洲色图.com| 国产激情一区二区三区四区| 亚洲精品国产一区二区三区四区在线| 精品国产91乱码一区二区三区| 欧美日韩国产天堂| 欧美日韩不卡视频| 欧洲av一区二区嗯嗯嗯啊| 色综合久久久久| 91久久精品一区二区三| 在线一区二区三区四区五区 | 久久这里只有精品6| 欧美电影免费观看高清完整版 | 九色porny丨国产精品| 日本亚洲电影天堂| 国产一区二区三区四区在线观看 | 欧美人xxxx| 欧美第一区第二区| 久久久www免费人成精品| 中文字幕精品在线不卡| 亚洲欧美日韩系列| 亚洲一区在线播放| 日韩国产一二三区| 国产精品69毛片高清亚洲| 成人av网址在线| 精品视频1区2区| 欧美成人video| 国产精品私人影院| 亚洲成人资源网| 精品一二三四在线| 91在线国内视频| 欧美一区二区三区四区在线观看| 久久天堂av综合合色蜜桃网| 国产精品国产三级国产三级人妇| 欧美日韩视频第一区| 精品国产91洋老外米糕| 亚洲欧洲另类国产综合| 丝袜诱惑制服诱惑色一区在线观看| 精品在线一区二区| 色综合久久综合网欧美综合网| 欧美日韩aaaaaa| 久久久噜噜噜久久人人看| 中文字幕亚洲一区二区va在线| 亚洲国产成人精品视频| 国产一区二区三区视频在线播放| 97精品久久久午夜一区二区三区| 欧美一区二区三区小说| 1区2区3区国产精品| 麻豆成人91精品二区三区| 成人99免费视频| 91精品在线观看入口| 亚洲欧洲av在线| 国产麻豆视频一区二区| 欧美日韩一级二级| 国产欧美一区二区精品仙草咪| 性久久久久久久久| 97se亚洲国产综合自在线不卡 | 亚洲精品美国一| 国内一区二区在线| 精品视频在线免费| 亚洲免费av观看| 国产成人精品三级麻豆| 日韩一区二区免费视频| 亚洲一级片在线观看| www.欧美色图| 久久九九国产精品| 久热成人在线视频| 日韩欧美一区电影| 丝袜美腿亚洲综合| 欧美三级电影网站| 亚洲线精品一区二区三区八戒| a级高清视频欧美日韩| 国产欧美精品日韩区二区麻豆天美| 免费国产亚洲视频| 91精品国产欧美一区二区18| 亚洲成人黄色影院| 91黄色免费版| 一卡二卡三卡日韩欧美| 色婷婷久久99综合精品jk白丝| 国产精品伦一区| 成人理论电影网| 日本一区二区视频在线| 国产成人综合网| 国产欧美精品在线观看| 国产91高潮流白浆在线麻豆| 国产日产欧美精品一区二区三区| 国模冰冰炮一区二区| 欧美精品一区二区在线观看| 国内精品免费在线观看| 欧美v日韩v国产v| 精品制服美女久久| 国产日韩欧美a| 成人app软件下载大全免费| 亚洲日穴在线视频| 在线看不卡av| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩久久不卡| 欧美a一区二区| 国产亚洲一区二区在线观看| 成人一区在线看| 亚洲欧美乱综合| 欧美日韩国产电影| 久久国产福利国产秒拍| 国产日韩欧美不卡| 在线观看亚洲一区| 蜜臀久久99精品久久久久久9| 日韩一区二区视频在线观看| 国产精品18久久久久久久久久久久 | 欧美日韩高清不卡| 久久精品国产一区二区| 国产女同性恋一区二区| 日本韩国欧美在线| 久久精品国产一区二区三区免费看| 久久精品亚洲精品国产欧美| 99久久精品国产观看| 亚洲成人免费影院| 国产亚洲欧美日韩俺去了| 99精品视频在线免费观看| 首页亚洲欧美制服丝腿| 国产人成亚洲第一网站在线播放| av亚洲精华国产精华精华| 国产精品99久| a在线欧美一区| 亚洲va国产va欧美va观看| 久久综合99re88久久爱| 欧日韩精品视频| 国产成人aaaa| 日韩av电影免费观看高清完整版在线观看| 久久久精品黄色| 欧美午夜电影在线播放| 国产不卡一区视频| 日本中文在线一区| 成人免费在线播放视频| 日韩三级视频中文字幕| 91丨porny丨蝌蚪视频| 久久99国产乱子伦精品免费| 一区二区理论电影在线观看| 久久久www免费人成精品| 67194成人在线观看| 91丨porny丨最新| 国内精品久久久久影院一蜜桃| 亚洲一区二区在线免费看| 中文字幕av免费专区久久| 欧美xxxxxxxx| 欧美一区二区啪啪| 欧美三级韩国三级日本三斤 | 欧美亚洲高清一区二区三区不卡| 国产一区亚洲一区| 日韩精品亚洲专区| 一区二区三区日韩精品| 中文字幕一区在线观看视频| 国产亚洲女人久久久久毛片| 日韩欧美三级在线| 欧美久久久影院| 精品污污网站免费看| 欧美在线视频全部完| 色美美综合视频| 91天堂素人约啪| 91片黄在线观看| youjizz国产精品| av在线不卡观看免费观看| 国产不卡高清在线观看视频| 国产精品1区2区3区| 国产成人精品影视| 成人午夜大片免费观看| 国产馆精品极品| 国产99久久久国产精品| 成人激情动漫在线观看| 国产超碰在线一区| 成人国产精品免费观看视频| 成人午夜私人影院| 成人av免费在线播放| 91社区在线播放| 欧美亚洲国产怡红院影院| 精品视频一区二区三区免费| 7777精品伊人久久久大香线蕉完整版| 欧美乱妇15p| 日韩欧美不卡在线观看视频| 久久婷婷国产综合精品青草| 国产性做久久久久久| 国产精品天干天干在线综合| 亚洲视频 欧洲视频| 亚洲国产综合色| 蜜芽一区二区三区| 国产大陆a不卡| www..com久久爱| 在线观看成人小视频| 91麻豆精品国产自产在线观看一区| 日韩一卡二卡三卡四卡| 久久久亚洲午夜电影| 国产精品电影一区二区| 亚洲成人精品影院| 国内精品伊人久久久久av一坑 | 国产精品一区一区三区| 床上的激情91.| 色一区在线观看| 精品国产制服丝袜高跟| 国产精品欧美精品| 亚洲超丰满肉感bbw| 国产精品99久久久久久似苏梦涵|