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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产短视频精品区第一页 | 中国男女全黄大片一级 | 久国产精品久久精品国产四虎 | 精品久久不卡 | 亚洲国产成人久久笫一页 | 91在线永久 | 色射综合 | 99热这里只有精品首页 | 久久黄色网址 | 青青操在线观看 | 波多野结衣xxxx性精品 | 6一10周岁毛片在线 717影院理论午夜伦八戒 | 日韩在线一区视频 | 久久福利资源国产精品999 | 青青青爽视频在线观看 | 亚洲乱码中文字幕 | 久草精品视频 | 亚洲精品在线视频观看 | 青草视频在线 | 精品国产网站 | 青青热久久国产久精品秒播 | 亚洲视频区 | 午夜在线| 国产九九精品 | 在线欧洲成人免费视频 | 美日韩在线视频 | 久久视屏这里只有精品6国产 | 亚洲天堂久久新 | 亚洲另类老妇videos | 视频在线观看入口一二三2021 | 四虎影视库永久在线地址 | 91精品国产综合成人 | 99热福利| 欧美性xxxxbbbb | 青青青爽视频在线观看入口 | 成年人香蕉视频 | 人人爱人人做 | 免费国产一区 | 欧洲午夜视频 | a毛片成人免费全部播放 | 日本h在线精品免费观看 |