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

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

淺談MySQL中char和varchar

更新時間:2021-02-13 09:00:00 來源:動力節點 瀏覽1915次

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

char:定長,效率高,一般用于固定長度的表單提交數據存儲;例如:身份證號,手機號,電話,密碼等。

varchar:不定長,效率偏低。

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

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

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

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

2、VARCHAR和TEXT、BlOB類型的區別

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

BLOB和TEXT類型需要1,2,3或4個字節來記錄列值的長度,這取決于類型的最大可能長度。VARCHAR需要定義大小,有65535字節的最大限制;TEXT則不需要。如果你把一個超過列類型最大長度的值賦給一個BLOB或TEXT列,值被截斷以適合它。

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

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

3、char,varchar和text的區別

長度的區別,char范圍是0~255,varchar最長是64k,但是注意這里的64k是整個row的長度,要考慮到其它的 column,還有如果存在not null的時候也會占用一位,對不同的字符集,有效長度還不一樣,比如utf8的,最多21845,還要除去別的column,但是varchar在一般 情況下存儲都夠用了。如果遇到了大文本,考慮使用text,最大能到4G。

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

char和varchar可以有默認值,text不能指定默認值。

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

以上就是對MySQL中的char和varchar的簡單介紹,關于char和varchar的更加復雜的用法和性質可以在本站的MySQL教程中找到答案,我們可以由淺入深,深入學習MySQL中char和varchar的用法。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日本一级一片免费 | 老司机精品视频个人在观看 | 农村寡妇一级毛片免费播放 | 一级黄色a视频 | 日本免费高清一区 | 欧洲成人在线 | 精品一区二区三区在线观看 | 在线视频免费国产成人 | 四虎免费影院ww4164h | 亚洲国产综合在线 | 欧美激情在线观看一区二区三区 | 亚洲精品一区二区三区四区 | 国产精品久久久久一区二区三区 | 五月天激情在线 | 国产91精品久久久久久 | 丝袜亚洲精品中文字幕一区 | 国产精品揄拍一区二区久久 | 欧美夜色 | 亚洲热在线观看 | 国产成人精品无缓存在线播放 | 欧美伊人久久 | 国产伦人伦偷精品视频 | 操人视频网站 | 中国一级毛片视频 | 91精品国产美女福到在线不卡 | 亚洲精品中文字幕区 | 国产一区视频在线播放 | 亚洲欧美日韩国产色另类 | 99精彩视频在线观看 | 亚洲欧美日韩国产色另类 | 亚洲欧美日韩中文字幕在线一 | 亚洲免费高清视频 | 亚洲精品成人456在线播放 | 狠狠色噜噜狠狠狠狠色综合久 | 亚州色吧| 国产人成精品综合欧美成人 | 天天怕夜夜怕狠狠怕 | 色播影院性播影院私人影吧 | 国产精品夜色一区二区三区 | 欧美一级毛片片aa视频 | 韩国三日本三级中文字幕 |