大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注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) 瀏覽2033次

在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ù)文檔推薦 >>
主站蜘蛛池模板: 99尹人香蕉国产免费天天在线 | 国产欧美亚洲精品第二区首页 | 东北老妇露脸xxxxx | 久久亚洲欧美 | 久久99影院 | 欧美 亚洲 另类 热图 | 99精品久久99久久久久 | 中国产一级毛片 | 夜色视频网站 | 精品国产91乱码一区二区三区 | 黄 色 免 费 网站在线观看 | 日韩欧美国产卡通动漫 | 久久精品23| 亚洲国产精品婷婷久久久久 | 日本成人一区二区三区 | 国产理论视频在线观看 | 九九九精品午夜在线观看 | 亚洲一区二区三区久久久久 | 女人大毛片一级毛片一 | 国产一区不卡 | 日韩欧美视频一区二区在线观看 | 狠狠色噜噜狠狠狠狠色综合久 | 特黄女一级毛片 | 99视频在线 | 99热这里只有精品国产99 | 91视频网址入口 | 美女久久 | 天天射综合网站 | 久久伦理片 | 国产欧美日韩亚洲 | 七七七久久久久人综合 | aaaaaa毛片免费看 | 成人在色线视频在线观看免费大全 | 成人99国产精品一级毛片 | 一级黄毛片 | 久久综合一本 | 欧美一级毛片在线观看 | 日日夜人人澡人人澡人人看免 | 国产精品亚洲国产 | 91热在线观看精品 | 精品国产呦系列在线看 |