mysql數(shù)據(jù)類型

一、char的長度是固定的,不管存儲的數(shù)據(jù)是多少都會是固定的長度,上限為255個字節(jié),varchar的上限為65535字節(jié),
char(4); //這個4表示最多存儲4個【字符】, 
長度可以為從0到255的任何值,當存儲的字符串長度小于指定的長度, 
會在字符串的右邊填充空格達到指定的長度,當查詢字符串的時候會刪除右邊空格


二、varchar 是變長的,
varchar(4)//這個4表示最多存儲4個【字符】, 
長度可以指定為0到65535之間的值(VARCHAR的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是65,532字節(jié)), 
VARCHAR值保存時只保存需要的字符數(shù),另加一個字節(jié)來記錄長度(如果列聲明的長度超過255,則使用兩個字節(jié)) 
varchar(30)最大存儲30個字符;varchar(5)和(200)存儲hello所占空間一樣,但后者在排序時會消耗更多內存,因為order by col采用fixed_length計算col長度(memory引擎也一樣)


三、int(20)中20的涵義是指顯示字符的長度
但要加參數(shù)的,最大為255,比如它是記錄行數(shù)的id,插入10筆資料,它就顯示00000000001 ~~~00000000010,當字符的位數(shù)超過11,它也只顯示11位,如果你沒有加那個讓它未滿11位就前面加0的參數(shù),它不會在前面加0
20表示最大顯示寬度為20,但仍占4字節(jié)存儲,存儲范圍不變;


四、text
text的上限位65535,不能設定默認值
五、總結char,varchar,text區(qū)別
char,存定長,速度快,存在空間浪費的可能,會處理尾部空格
varchar,存變長,速度慢,不存在空間浪費,不處理尾部空格,上限65535,但是有存儲長度實際65532最大可用
text,存變長大數(shù)據(jù),速度慢,不存在空間浪費,不處理尾部空格,上限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可以有默認值,text不能指定默認值
取數(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ù)。


空間方面:
從官方文檔中我們可以得知當varchar大于某些數(shù)值的時候,其會自動轉換為text,大概規(guī)則如下:
大于varchar(255)變?yōu)?tinytext
大于varchar(500)變?yōu)?text
大于varchar(20000)變?yōu)?mediumtext
所以對于過大的內容使用varchar和text沒有太多區(qū)別。
性能方面:
索引會是影響性能的最關鍵因素,而對于text來說,只能添加前綴索引,并且前綴索引最大只能達到1000字節(jié)。
而貌似varhcar可以添加全部索引,但是經過測試,其實也不是。由于會進行內部的轉換,所以long varchar其實也只能添加1000字節(jié)的索引,如果超長了會自動截斷。
當超過255的長度之后,使用varchar和text沒有本質區(qū)別,只需要考慮一下兩個類型的特性即可。
(4)、MySQL為什么這么設計
對大多數(shù)應用沒有意義,只是規(guī)定一些工具用來顯示字符的個數(shù);int(1)和int(20)存儲和計算均一樣;

參考:http://www.cnblogs.com/billyxp/p/3548540.html












當前題目:mysql數(shù)據(jù)類型
本文鏈接:http://bm7419.com/article44/jcsiee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設域名注冊、品牌網(wǎng)站設計關鍵詞優(yōu)化、外貿建站網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司