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