您現(xiàn)在的位置是:影視綜藝
mysql中char和varchar有什么區(qū)別?,char與varchar
2020-10-08 20:23影視綜藝
簡(jiǎn)介char類型適用場(chǎng)景對(duì)存取速度要求高,或者占據(jù)空間一致的場(chǎng)景;char和varchar的區(qū)別:1、占據(jù)空間不同:char的長(zhǎng)度是不可變的,而varchar的長(zhǎng)度是可變的;2、存取速度不同:char的存 mysql中char和varchar有什么區(qū)別?...

char類型適用場(chǎng)景對(duì)存取速度要求高,或者占據(jù)空間一致的場(chǎng)景;
char和varchar的區(qū)別:
1、占據(jù)空間不同:char的長(zhǎng)度是不可變的,而varchar的長(zhǎng)度是可變的;
2、存取速度不同:char的存取數(shù)度比varchar要快得多,因?yàn)槠溟L(zhǎng)度固定,方便程序的存儲(chǔ)與查找;
3、存儲(chǔ)方式不同:char的存儲(chǔ)方式是對(duì)英文字符占用1個(gè)字節(jié),對(duì)漢字占用兩個(gè)字節(jié),而varchar的存儲(chǔ)方式是對(duì)每個(gè)英文字符占用2個(gè)字節(jié),漢字也占用2個(gè)字節(jié);
擴(kuò)展資料
1、char的存取數(shù)度比varchar要快得多:因?yàn)槠溟L(zhǎng)度固定,方便程序的存儲(chǔ)與查找,但是char也為此付出的是空間的代價(jià),因?yàn)槠溟L(zhǎng)度固定,所以難免會(huì)有多余的空格占位符占據(jù)空間,可謂是以空間換取時(shí)間效率,而varchar是以空間效率為首位的;
2、char和varchar的存儲(chǔ)數(shù)據(jù)都非unicode的字符數(shù)據(jù)。
-下面是更多關(guān)于varchar的問答
區(qū)別: 1.CHAR的長(zhǎng)度是固定VARCHAR2的長(zhǎng)度是可以變化的, 比如,存符串“abc",CHAR (10),表示你存儲(chǔ)的字符將占10個(gè)字節(jié)(包括7個(gè)空字符),而同樣的VARCHAR2 (10)則只占用3個(gè)字節(jié)的長(zhǎng)度,10只是最大值,當(dāng)你存儲(chǔ)的字符小于10時(shí),按實(shí)際長(zhǎng)度存儲(chǔ)。 2.CHAR的效率比VARCHAR2的效率稍高。 3.目前VARCHAR是VARCHAR2的同義詞。工業(yè)標(biāo)準(zhǔn)的VARCHAR類型可以存儲(chǔ)空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權(quán)利。Oracle自己開發(fā)了一個(gè)數(shù)據(jù)類型VARCHAR2,這個(gè)類型不是一個(gè)標(biāo)準(zhǔn)的VARCHAR,它將在數(shù)據(jù)庫中varchar列可以存儲(chǔ)空字符串的特性改為存儲(chǔ)NULL值。如果你想有向后兼容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。 何時(shí)該用CHAR,何時(shí)該用varchar2? CHAR與VARCHAR2是一對(duì)矛盾的統(tǒng)一體,兩者是互補(bǔ)的關(guān)系. VARCHAR2比CHAR節(jié)省空間,在效率上比CHAR會(huì)稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們?cè)跀?shù)據(jù)庫設(shè)計(jì)上常說的‘以空間換效率’。 VARCHAR2雖然比CHAR節(jié)省空間,但是如果一個(gè)VARCHAR2列經(jīng)常被修改,而且每次被修改的數(shù)據(jù)的長(zhǎng)度不同,這會(huì)引起‘行遷移’(Row Migration)現(xiàn)象,而這造成多余的I/O,是數(shù)據(jù)庫設(shè)計(jì)和調(diào)整中要盡力避免的,在這種情況下用CHAR代替VARCHAR2會(huì)更好一些。 Char(n)是長(zhǎng)度為n個(gè)字節(jié)的定長(zhǎng)unicode的字符數(shù)據(jù)N為一個(gè)介于1到8000之間的值存儲(chǔ)大小為輸入數(shù)據(jù)的實(shí)際字度,而不是n個(gè)字節(jié)。如果輸入的實(shí)際字節(jié)長(zhǎng)度少于n,那么其他位置會(huì)被空格填充。在數(shù)據(jù)存儲(chǔ)中英文字母和數(shù)字占一個(gè)字節(jié),漢字占兩個(gè)字節(jié)。那么char(n)最多可以存儲(chǔ)n個(gè)英文字母或數(shù)字,或者n/2個(gè)漢字。 Varchar(n)是長(zhǎng)度為n 個(gè)字節(jié)的可變長(zhǎng)度且非 Unicode 的字符數(shù)據(jù)。n 必須是一個(gè)介于1 和8,000 之間的數(shù)值。存儲(chǔ)大小為輸入數(shù)據(jù)的字節(jié)的實(shí)際長(zhǎng)度,而不是 n 個(gè)字節(jié)。注意它和char(n)的區(qū)別是char(n)是定長(zhǎng)的,varchar(n)是變長(zhǎng)的。如果輸入的字符的實(shí)際字節(jié)長(zhǎng)度少于n,那么它的長(zhǎng)度就是實(shí)際輸入的字節(jié)長(zhǎng)度。在數(shù)據(jù)存儲(chǔ)中英文字母和數(shù)字占一個(gè)字節(jié),漢字占兩個(gè)字節(jié)。Varchar(n)最多可以存儲(chǔ)n個(gè)英文字母或數(shù)字,或者n/2個(gè)漢字。 Char(n)最多可以存儲(chǔ)n個(gè)英文字母或數(shù)字,或者n個(gè)漢字。 在數(shù)據(jù)檢索中,一般來說char型字段的數(shù)據(jù)是最快的,varchar,nvarchar型字段其次。 在所存數(shù)據(jù)長(zhǎng)度不一的情況下,varcahr型字段所占空間最少,char,nvarchar其次。 那么到底在什么樣的情況下使用什么樣的數(shù)據(jù)類型那? 如果所存數(shù)據(jù)長(zhǎng)度基本一致,建議使用char型。這樣檢索速度快,但是提取的時(shí)候要注意用trim()函數(shù)剔除所存數(shù)據(jù)兩邊的空格。 如果所存數(shù)據(jù)長(zhǎng)度差異較大,可以使用varchar或者nvarchar。如果想較好的支持多語言的話,最好使用nvarchar。使用nvarchar可以減少字符轉(zhuǎn)換問題,防止某些情況下亂碼的出現(xiàn)。 Char(n) Varchar(n) Nvarchar(n) N 最大值 8000 8000 4000 數(shù)據(jù)長(zhǎng)度 固定(不足空格填充) 可變(實(shí)際數(shù)據(jù)長(zhǎng)度) 可變(實(shí)際數(shù)據(jù)長(zhǎng)度)可存儲(chǔ)最多英文(數(shù)字) 8000 8000 4000 最多漢字?jǐn)?shù) 4000 4000 4000 英文(數(shù)字)所占字節(jié) 1 1 2 漢字所占字節(jié) 2 2 2 檢索速度 快 慢 慢 char有固定的長(zhǎng)度,而varchar屬于可變長(zhǎng)的字符類型。 區(qū)別: 1.CHAR的長(zhǎng)度是固定的,而VARCHAR2的長(zhǎng)度是變化的, 比如,存儲(chǔ)字“abc",對(duì)于CHAR (20),表示你存儲(chǔ)的字占20個(gè)字節(jié)(包括17個(gè)空字符),而同樣的VARCHAR2 (20)則只占用3個(gè)字節(jié)的長(zhǎng)度,20只是最大值,當(dāng)你存儲(chǔ)的字符小于20時(shí),按實(shí)際長(zhǎng)度存儲(chǔ)。 2.CHAR的效率比VARCHAR2的效率稍高。 3.目前VARCHAR是VARCHAR2的同義詞。工業(yè)標(biāo)準(zhǔn)的VARCHAR類型可以存儲(chǔ)空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權(quán)利。Oracle自己開發(fā)了一個(gè)數(shù)據(jù)類型VARCHAR2,這個(gè)類型不是一個(gè)標(biāo)準(zhǔn)的VARCHAR,它將在數(shù)據(jù)庫中varchar列可以存儲(chǔ)空字符串的特性改為存儲(chǔ)NULL值。如果你想有向后兼容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。 何時(shí)該用CHAR,何時(shí)該用varchar2? CHAR與VARCHAR2是一對(duì)矛盾的統(tǒng)一體,兩者是互補(bǔ)的關(guān)系. VARCHAR2比CHAR節(jié)省空間,在效率上比CHAR會(huì)稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們?cè)跀?shù)據(jù)庫設(shè)計(jì)上常說的‘以空間換效率’。 VARCHAR2雖然比CHAR節(jié)省空間,但是如果一個(gè)VARCHAR2列經(jīng)常被修改,而且每次被修改的數(shù)據(jù)的長(zhǎng)度不同,這會(huì)引起‘行遷移’(Row Migration)現(xiàn)象,而這造成多余的I/O,是數(shù)據(jù)庫設(shè)計(jì)和調(diào)整中要盡力避免的,在這種情況下用CHAR代替VARCHAR2會(huì)更好一些。mysql中char與varchar的區(qū)別
1.都是用來存儲(chǔ)字符串的,他們的保存方式不一樣。
2.char定的長(zhǎng)度,而varchar屬于可變長(zhǎng)的字符類型。
char是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型,它們的區(qū)別是:
char(M)類型的數(shù)據(jù)列里,每個(gè)值都占用M個(gè)字節(jié),如果某個(gè)長(zhǎng)度小于M,MySQL就會(huì)在它的右邊用空格字符補(bǔ)足.在varchar(M)類型的數(shù)據(jù)列里,每個(gè)值只占用剛好夠用的字節(jié)再加上一個(gè)用來記錄其長(zhǎng)度的字節(jié)(即總長(zhǎng)度為L(zhǎng)+1字節(jié))。在MySQL中用來判斷是否需要進(jìn)行對(duì)據(jù)列類型轉(zhuǎn)換的規(guī)則1、在一個(gè)數(shù)據(jù)表里,如果每一個(gè)數(shù)據(jù)列的長(zhǎng)度都是固定的,那么每一個(gè)數(shù)據(jù)行的長(zhǎng)度也將是固定的.2、只要數(shù)據(jù)表里有一個(gè)數(shù)據(jù)列的長(zhǎng)度的可變的,那么各數(shù)據(jù)行的長(zhǎng)度都是可變的.3、如果某個(gè)數(shù)據(jù)表里的數(shù)據(jù)行的長(zhǎng)度是可變的,那么,為了節(jié)約存儲(chǔ)空間,MySQL會(huì)把這個(gè)數(shù)據(jù)表里的固定長(zhǎng)度類型的數(shù)據(jù)列轉(zhuǎn)換為相應(yīng)的可變長(zhǎng)度類型. 本回答被網(wǎng)友采納 區(qū) 1.CHAR的是固定的,而VARCHAR2的長(zhǎng)度是可以變化的, 比如,存儲(chǔ)字符abc",對(duì)于CHAR (10),表示你存字符將占10個(gè)字節(jié)(包括7個(gè)空字符),而同樣的VARCHAR2 (10)則只占用3個(gè)字節(jié)的長(zhǎng)度,10只是最大值,當(dāng)你存儲(chǔ)的字符小于10時(shí),按實(shí)際長(zhǎng)度存儲(chǔ)。 2.CHAR的效率比VARCHAR2的效率稍高。 3.目前VARCHAR是VARCHAR2的同義詞。工業(yè)標(biāo)準(zhǔn)的VARCHAR類型可以存儲(chǔ)空字符串,但是oracle不這樣做,盡管它保留以后這樣做的權(quán)利。Oracle自己開發(fā)了一個(gè)數(shù)據(jù)類型VARCHAR2,這個(gè)類型不是一個(gè)標(biāo)準(zhǔn)的VARCHAR,它將在數(shù)據(jù)庫中varchar列可以存儲(chǔ)空字符串的特性改為存儲(chǔ)NULL值。如果你想有向后兼容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。 何時(shí)該用CHAR,何時(shí)該用varchar2? CHAR與VARCHAR2是一對(duì)矛盾的統(tǒng)一體,兩者是互補(bǔ)的關(guān)系. VARCHAR2比CHAR節(jié)省空間,在效率上比CHAR會(huì)稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們?cè)跀?shù)據(jù)庫設(shè)計(jì)上常說的‘以空間換效率’。 VARCHAR2雖然比CHAR節(jié)省空間,但是如果一個(gè)VARCHAR2列經(jīng)常被修改,而且每次被修改的數(shù)據(jù)的長(zhǎng)度不同,這會(huì)引起‘行遷移’(Row Migration)現(xiàn)象,而這造成多余的I/O,是數(shù)據(jù)庫設(shè)計(jì)和調(diào)整中要盡力避免的,在這種情況下用CHAR代替VARCHAR2會(huì)更好一些。 char是定長(zhǎng),varchar是變長(zhǎng)Tags:varchar,char與varchar,mysql中cha
相關(guān)文章
- 《他是誰》編劇回應(yīng)爛尾 平淡如水的謎底終將揭開 感謝
- 《鈴芽之旅》成清明檔票房冠軍 5313.6萬票房 電影市場(chǎng)
- 今晚見長(zhǎng)月燼明 羅云熙白鹿一起闖蕩四洲三界 群像海報(bào)
- 創(chuàng)造營(yíng)2019開播四周年 《喊出我的名字》四年了 學(xué)員們
- 消毒水配比 84消毒液的配比是多少???
- 溫度計(jì)的原理 溫度計(jì)的工作原理
- 全站儀使用方法,全站儀使用方法
- 高壓線的安全距離,建筑物和高壓線的安全距離是多少?
- 免費(fèi)在線電影《觸不可及》觀后有感續(xù)
- ,佛說盂蘭盆經(jīng)的內(nèi)容簡(jiǎn)介
隨機(jī)圖文
求《贈(zèng)我予白》的完整版txt百度云資源!,求《贈(zèng)我予白
yǔ白作者:小八老爺:沈佑白是高傲的,而徐品羽于他的。PS:鏈出來回答就會(huì)被刪,但是你是匿名,我加不了...美國(guó)總統(tǒng)特朗普到底多少歲了?,美國(guó)總統(tǒng)特郎普的年齡?
唐納德·特朗普(Donald Trump),1946年6月14日生于紐約,美國(guó)共和黨籍政治家、企業(yè)家、商人,第45任美國(guó)...求書:男主占有欲強(qiáng),對(duì)女主很霸道的小說?要有囚禁這
玩寵 (作雨革月)男主徹頭徹尾的畜牲他根本不懂什么。用錢勢(shì)紈绔子弟。他只會(huì)威脅,凌辱,性暴力。女主和...”流年笑擲 未來可期”這句話是什么意思?,未來可期不
是未來的日子是值得期待的,辜負(fù)美好的時(shí)光。生活,辛苦與磨礪,都為深刻的體會(huì)與印記,苦心勵(lì)志,心懷感恩...
點(diǎn)擊排行

猜你喜歡
- 《他是誰》編劇回應(yīng)爛尾 平淡如水的謎底終將揭開 感謝
- 《鈴芽之旅》成清明檔票房冠軍 5313.6萬票房 電影市場(chǎng)
- 今晚見長(zhǎng)月燼明 羅云熙白鹿一起闖蕩四洲三界 群像海報(bào)
- 創(chuàng)造營(yíng)2019開播四周年 《喊出我的名字》四年了 學(xué)員們
- 消毒水配比 84消毒液的配比是多少???
- 溫度計(jì)的原理 溫度計(jì)的工作原理
- 全站儀使用方法,全站儀使用方法
- 高壓線的安全距離,建筑物和高壓線的安全距離是多少?
- 免費(fèi)在線電影《觸不可及》觀后有感續(xù)
- ,佛說盂蘭盆經(jīng)的內(nèi)容簡(jiǎn)介