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

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

淺談MySQL中char和varchar

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

在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毛片在线搐放正片 | 最近最新好看的中文字幕2019 | 一区二区三区日本 | 激情丁香六月 | 影音先锋国产系列精品 | 377p亚洲欧洲日本大胆色噜噜 | 欧美日韩三区 | 日韩免费毛片全部不收费 | 做久爱视频在线观看 | 91av导航| 一区二区三区无码高清视频 | 色哟哟久久 | 一个色亚洲 | 亚洲人成高清毛片 | 午夜成人在线视频 | 高清视频一区二区三区 | 日韩在线小视频 | 国产清纯91天堂在线观看 | 中国黄色三级 | 成年人免费在线看 | 丁香六月婷婷 | 精品欧美高清不卡在线 | 日韩一区二区三区中文字幕 | 欧美日韩在线免费看 | 免费看a级 | 一级网| 国产91久久最新观看地址 | 日韩精品免费一区二区三区 | 欧美在线精品一区二区三区 | 日韩在线精品 | 欧美日韩精品一区二区三区四区 | 欧美一区二区三区视视频 | 成年网站免费视频黄 | 成人免费视频无遮挡在线看 | a亚洲天堂 | 欧美三级香港三级日本三级 |