大战熟女丰满人妻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的用法。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 另类重口性色老妇 | 国产50岁老熟妇毛片 | 中文字幕高清免费不卡视频 | 四虎免费永久观看 | 日本毛片免费看 | 亚洲日本香蕉视频 | 国产人做人爱视频精品 | 国产高清在线视频一区二区三区 | 欧美日本中文 | 中文字幕一区二区三区免费视频 | 久久99国产精品亚洲 | 99在线热视频只有精品免费 | 日本一级毛片在线观看 | 天天干影视 | 亚洲合集综合久久性色 | 免费国产成人高清在线观看麻豆 | 黄色录像欧美 | 国产精品亚洲玖玖玖在线靠爱 | 亚洲视频综合 | 国产真实一区二区三区 | 伊人久久国产免费观看视频 | 网络毛片| 国产精品一区二区三区免费视频 | 日韩国产成人资源精品视频 | 国产精品伦理久久久久 | 久久大香香蕉国产免费网站 | 在线国产福利 | 欧美成人高清 | 久久久免费精品 | 久久er热这里只有精品免费 | 91国内视频| 久久中文字幕视频 | 九一国产| 婷婷国产成人久久精品激情 | 亚洲一级毛片视频 | 五月天婷婷在线观看高清 | 夜色资源在线观看免费 | 正在播放国产乱子伦视频 | 精品毛片免费看 | 青青草99热这里都是精品 | 天天干天天爱天天操 |