宣漢網(wǎng)站制作公司哪家好,找
成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、
成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。
成都創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選
成都創(chuàng)新互聯(lián)。
/>一、char的長度是固定的,不管存儲的數(shù)據(jù)是多少都會是固定的長度,上限為255個字節(jié),varchar的上限為65535字節(jié),
char(4); //這個4表示最多存儲4個【字符】,
長度可以為從0到255的任何值,當(dāng)存儲的字符串長度小于指定的長度,
會在字符串的右邊填充空格達(dá)到指定的長度,當(dāng)查詢字符串的時候會刪除右邊空格
二、varchar 是變長的,
varchar(4)//這個4表示最多存儲4個【字符】,
長度可以指定為0到65535之間的值(VARCHAR的大有效長度由大行大小和使用的字符集確定。整體大長度是65,532字節(jié)),
VARCHAR值保存時只保存需要的字符數(shù),另加一個字節(jié)來記錄長度(如果列聲明的長度超過255,則使用兩個字節(jié))
varchar(30)大存儲30個字符;varchar(5)和(200)存儲hello所占空間一樣,但后者在排序時會消耗更多內(nèi)存,因為order by col采用fixed_length計算col長度(memory引擎也一樣)
三、int(20)中20的涵義是指顯示字符的長度
但要加參數(shù)的,大為255,比如它是記錄行數(shù)的id,插入10筆資料,它就顯示00000000001 ~~~00000000010,當(dāng)字符的位數(shù)超過11,它也只顯示11位,如果你沒有加那個讓它未滿11位就前面加0的參數(shù),它不會在前面加0
20表示大顯示寬度為20,但仍占4字節(jié)存儲,存儲范圍不變;
四、text
text的上限位65535,不能設(shè)定默認(rèn)值
五、總結(jié)char,varchar,text區(qū)別
char,存定長,速度快,存在空間浪費(fèi)的可能,會處理尾部空格
varchar,存變長,速度慢,不存在空間浪費(fèi),不處理尾部空格,上限65535,但是有存儲長度實際65532大可用
text,存變長大數(shù)據(jù),速度慢,不存在空間浪費(fèi),不處理尾部空格,上限65535,會用額外空間存放數(shù)據(jù)長度,顧可以全部使用65535。
長度的區(qū)別,char范圍是0~255,varchar最長是64k,但是注意這里的64k是整個row的長度,要考慮到其它的column,還有如果存在not null的時候也會占用一位,對不同的字符集,有效長度還不一樣,比如utf8的,最多21845,還要除去別的column,但是varchar在一般情況下存儲都夠用了。如果遇到了大文本,考慮使用text,大能到4G。
效率來說基本是char>varchar>text,但是如果使用的是Innodb引擎的話,推薦使用varchar代替char
char和varchar可以有默認(rèn)值,text不能指定默認(rèn)值
取數(shù)據(jù)的時候,char類型的要用trim()去掉多余的空格,而varchar是不需要的,盡管如此,char的存取數(shù)度還是要比varchar要快得多,因為其長度固定,方便程序的存儲與查找;但是char也為此付出的是空間的代價,因為其長度固定,所以難免會有多余的空格占位符占據(jù)空間,可謂是以空間換取時間效率,而varchar是以空間效率為首位的。再者,char的存儲方式是,對英文字符(ASCII)占用1個字節(jié),對一個漢字占用兩個字節(jié);
而varchar的存儲方式是,對每個英文字符占用2個字節(jié),漢字也占用2個字節(jié),兩者的存儲數(shù)據(jù)都非unicode的字符數(shù)據(jù)。
空間方面:
從官方文檔中我們可以得知當(dāng)varchar大于某些數(shù)值的時候,其會自動轉(zhuǎn)換為text,大概規(guī)則如下:
大于varchar(255)變?yōu)?tinytext
大于varchar(500)變?yōu)?text
大于varchar(20000)變?yōu)?mediumtext
所以對于過大的內(nèi)容使用varchar和text沒有太多區(qū)別。
性能方面:
索引會是影響性能的最關(guān)鍵因素,而對于text來說,只能添加前綴索引,并且前綴索引大只能達(dá)到1000字節(jié)。
而貌似varhcar可以添加全部索引,但是經(jīng)過測試,其實也不是。由于會進(jìn)行內(nèi)部的轉(zhuǎn)換,所以long varchar其實也只能添加1000字節(jié)的索引,如果超長了會自動截斷。
當(dāng)超過255的長度之后,使用varchar和text沒有本質(zhì)區(qū)別,只需要考慮一下兩個類型的特性即可。
(4)、mysql為什么這么設(shè)計
對大多數(shù)應(yīng)用沒有意義,只是規(guī)定一些工具用來顯示字符的個數(shù);int(1)和int(20)存儲和計算均一樣;
參考:/tupian/20230522/3548540.html />
網(wǎng)站題目:mysql數(shù)據(jù)類型-創(chuàng)新互聯(lián)
文章鏈接:http://jinyejixie.com/article40/deceho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、面包屑導(dǎo)航、網(wǎng)站設(shè)計、電子商務(wù)、用戶體驗、外貿(mào)網(wǎng)站建設(shè)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)