黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 淺談MySQL中char和varchar

淺談MySQL中char和varchar

更新時(shí)間:2021-02-13 09:00:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1931次

在MYSQL中,char是指:使用指定長度的固定長度表示字符串的一種字段類型;比如char(8),則數(shù)據(jù)庫會(huì)使用固定的1個(gè)字節(jié)(八位)來存儲(chǔ)數(shù)據(jù),不足8位的字符串在其后補(bǔ)空字符。varchar(M)是一種比char更加靈活的數(shù)據(jù)類型,同樣用于表示字符數(shù)據(jù),但是varchar可以保存可變長度的字符串。本文我們就來介紹MySQL中char和varchar

char:定長,效率高,一般用于固定長度的表單提交數(shù)據(jù)存儲(chǔ);例如:身份證號(hào),手機(jī)號(hào),電話,密碼等。

varchar:不定長,效率偏低。

1、CHAR(M), VARCHAR(M)不同之處

CHAR(M)定義的列的長度為固定的,M取值可以為0~255之間,當(dāng)保存CHAR值時(shí),在它們的右邊填充空格以達(dá)到指定的長度。當(dāng)檢 索到CHAR值時(shí),尾部的空格被刪除掉。在存儲(chǔ)或檢索過程中不進(jìn)行大小寫轉(zhuǎn)換。CHAR存儲(chǔ)定長數(shù)據(jù)很方便,CHAR字段上的索引效率級(jí)高,比如定義 char(10),那么不論你存儲(chǔ)的數(shù)據(jù)是否達(dá)到了10個(gè)字節(jié),都要占去10個(gè)字節(jié)的空間,不足的自動(dòng)用空格填充。

VARCHAR(M)定義的列的長度為可變長字符串,M取值可以為0~65535之間,(VARCHAR的最大有效長度由最大行大小和使用 的字符集確定。整體最大長度是65,532字節(jié))。VARCHAR值保存時(shí)只保存需要的字符數(shù),另加一個(gè)字節(jié)來記錄長度(如果列聲明的長度超過255,則 使用兩個(gè)字節(jié))。VARCHAR值保存時(shí)不進(jìn)行填充。當(dāng)值保存和檢索時(shí)尾部的空格仍保留,符合標(biāo)準(zhǔn)SQL。varchar存儲(chǔ)變長數(shù)據(jù),但存儲(chǔ)效率沒有 CHAR高。如果一個(gè)字段可能的值是不固定長度的,我們只知道它不可能超過10個(gè)字符,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實(shí)際長度是它的值的實(shí)際長度+1。為什么”+1″呢?這一個(gè)字節(jié)用于保存實(shí)際使用了多大的長度。 從空間上考慮,用varchar合適;從效率上考慮,用char合適,關(guān)鍵是根據(jù)實(shí)際情況找到權(quán)衡點(diǎn)。

CHAR和VARCHAR最大的不同就是一個(gè)是固定長度,一個(gè)是可變長度。由于是可變長度,因此實(shí)際存儲(chǔ)的時(shí)候是實(shí)際字符串再加上一個(gè)記錄 字符串長度的字節(jié)(如果超過255則需要兩個(gè)字節(jié))。如果分配給CHAR或VARCHAR列的值超過列的最大長度,則對(duì)值進(jìn)行裁剪以使其適合。如果被裁掉 的字符不是空格,則會(huì)產(chǎn)生一條警告。如果裁剪非空格字符,則會(huì)造成錯(cuò)誤(而不是警告)并通過使用嚴(yán)格SQL模式禁用值的插入。

2、VARCHAR和TEXT、BlOB類型的區(qū)別

VARCHAR,BLOB和TEXT類型是變長類型,對(duì)于其存儲(chǔ)需求取決于列值的實(shí)際長度(在前面的表格中用L表示),而不是取決于類型 的最大可能尺寸。例如,一個(gè)VARCHAR(10)列能保存最大長度為10個(gè)字符的一個(gè)字符串,實(shí)際的存儲(chǔ)需要是字符串的長度 ,加上1個(gè)字節(jié)以記錄字符串的長度。對(duì)于字符串‘abcd’,L是4而存儲(chǔ)要求是5個(gè)字節(jié)。

BLOB和TEXT類型需要1,2,3或4個(gè)字節(jié)來記錄列值的長度,這取決于類型的最大可能長度。VARCHAR需要定義大小,有65535字節(jié)的最大限制;TEXT則不需要。如果你把一個(gè)超過列類型最大長度的值賦給一個(gè)BLOB或TEXT列,值被截?cái)嘁赃m合它。

一個(gè)BLOB是一個(gè)能保存可變數(shù)量的數(shù)據(jù)的二進(jìn)制的大對(duì)象。4個(gè)BLOB類型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB僅僅在他們能保存值的最大長度方面有所不同。

BLOB 可以儲(chǔ)存圖片,TEXT不行,TEXT只能儲(chǔ)存純文本文件。4個(gè)TEXT類型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT對(duì)應(yīng)于 4個(gè)BLOB類型,并且有同樣的最大長度和存儲(chǔ)需求。在BLOB和TEXT類型之間的唯一差別是對(duì)BLOB值的排序和比較以大小寫敏感方式執(zhí)行,而對(duì) TEXT值是大小寫不敏感的。換句話說,一個(gè)TEXT是一個(gè)大小寫不敏感的BLOB。

3、char,varchar和text的區(qū)別

長度的區(qū)別,char范圍是0~255,varchar最長是64k,但是注意這里的64k是整個(gè)row的長度,要考慮到其它的 column,還有如果存在not null的時(shí)候也會(huì)占用一位,對(duì)不同的字符集,有效長度還不一樣,比如utf8的,最多21845,還要除去別的column,但是varchar在一般 情況下存儲(chǔ)都?jí)蛴昧恕H绻龅搅舜笪谋荆紤]使用text,最大能到4G。

效率來說基本是char>varchar>text,但是如果使用的是Innodb引擎的話,推薦使用varchar代替char。

char和varchar可以有默認(rèn)值,text不能指定默認(rèn)值。

數(shù)據(jù)庫選擇合適的數(shù)據(jù)類型存儲(chǔ)還是很有必要的,對(duì)性能有一定影響。對(duì)于int類型的,如果不需要存取負(fù)值,最好加上unsigned;對(duì)于經(jīng)常出現(xiàn)在where語句中的字段,考慮加索引,整形的尤其適合加索引。

以上就是對(duì)MySQL中的char和varchar的簡單介紹,關(guān)于char和varchar的更加復(fù)雜的用法和性質(zhì)可以在本站的MySQL教程中找到答案,我們可以由淺入深,深入學(xué)習(xí)MySQL中char和varchar的用法。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 第一页综合 | 国产色婷婷精品综合在线手机播放 | 日韩精品免费一级视频 | 中文字幕在线观看免费视频 | 久久九九精品视频 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 波多野结衣在线观看视频 | 黄网站视频在线观看 | 日韩伦理一区 | 黄色一级大片儿 | 亚洲视频在线视频 | 免费在线视频成人 | 色视频免费观看高清完整 | 日本护士色xxxxx视频 | 亚洲视频 欧美视频 | 免费永久在线观看污污的网站 | 星光影院网高清在线观看 | 亚洲最大福利网 | 欧洲男女啪啪免费观看 | 欧美一级视频免费观看 | 海角社区hjb08真实 | 欧美韩日在线 | 免费看一级黄色录像 | 亚洲欧美一区二区三区四区 | 欧美 日韩 国产 在线 | 欧美亚洲高清日韩成人 | 国产91网站在线观看免费 | 成人午夜短视频 | 在线国产网站 | 91成人免费观看网站 | 人人爱天天做夜夜爽2020麻豆 | 欧美一级在线观看 | 亚洲精品日韩专区在线观看 | 亚洲欧美日韩国产综合专区 | 在线观看成人免费视频播放 | 国产一级特黄aa毛片 | 日本69xxx18hd| 国产精品亚洲欧美动漫卡通 | 99热在线免费观看 | 欧美激情一区二区三区在线 | 美女羞羞视频网站 |