成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Mysql中varchar與char的區(qū)別有哪些

這篇文章給大家分享的是有關(guān)MySQL中varchar與char的區(qū)別有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

金口河網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,金口河網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為金口河上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的金口河做網(wǎng)站的公司定做!

mysql中varchar與char的區(qū)別以及varchar(30)中的30代表的涵義

       (1)varchar與char的區(qū)別

varchar存儲(chǔ)可變長(zhǎng)字符串,小于255字節(jié)時(shí)需要1個(gè)額外字節(jié)(大于255需要2個(gè)額外字節(jié))存儲(chǔ)長(zhǎng)度,最大長(zhǎng)度為65532字節(jié)(所有列總和);

char存儲(chǔ)定長(zhǎng)(right padding),讀取時(shí)會(huì)截?cái)嗄┪部崭瘢L(zhǎng)度最大為255字符;

char 與varchar都是用來存儲(chǔ)字符串的,只是他們的保存方式不一樣,char有固定的長(zhǎng)度,而varchar屬于可變長(zhǎng)的字符類型。

char是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型。

char(M)類型的數(shù)據(jù)列里,每個(gè)值都占用M個(gè)字節(jié),如果某個(gè)長(zhǎng)度小于M,MySQL就會(huì)在它的右邊用空格字符補(bǔ)足。(在檢索操作中那些填補(bǔ)出來的空格字符將被去掉)在varchar(M)類型的數(shù)據(jù)列里,每個(gè)值只占用剛好夠用的字節(jié)再加上一個(gè)用來記錄其長(zhǎng)度的字節(jié)(即總長(zhǎng)度為L(zhǎng)+1字節(jié))。

建議:

myisam存儲(chǔ)引擎建議使用固定長(zhǎng)度,數(shù)據(jù)列代替可變長(zhǎng)度的數(shù)據(jù)列。

memory存儲(chǔ)引擎目前都使用固定數(shù)據(jù)行存儲(chǔ),因此無論使用char,varchar列都沒有關(guān)系。

Innodb存儲(chǔ)引擎建議使用varchar類型。

在MySQL中用來判斷是否需要進(jìn)行對(duì)數(shù)據(jù)列類型轉(zhuǎn)換的規(guī)則:

1. 在一個(gè)數(shù)據(jù)表里,如果每一個(gè)數(shù)據(jù)列的長(zhǎng)度都是固定的,那么每一個(gè)數(shù)據(jù)行的長(zhǎng)度也將是固定的。

2. 只要數(shù)據(jù)表里有一個(gè)數(shù)據(jù)列的長(zhǎng)度是可變的,那么各數(shù)據(jù)行的長(zhǎng)度都是可變的。

3. 如果某個(gè)數(shù)據(jù)表里的數(shù)據(jù)行的長(zhǎng)度是可變的,那么為了節(jié)約存儲(chǔ)空間,MySQL會(huì)把這個(gè)數(shù)據(jù)表里的固定長(zhǎng)度類型的數(shù)據(jù)列轉(zhuǎn)換為相應(yīng)的可變長(zhǎng)度類型。

     對(duì)于MyISAM表,盡量使用char,對(duì)于那些經(jīng)常需要修改而容易形成碎片的myisam和isam數(shù)據(jù)表就更是如此,它的缺點(diǎn)就是占用磁盤空間;

     對(duì)于InnoDB表,因?yàn)樗臄?shù)據(jù)行內(nèi)部存儲(chǔ)格式對(duì)固定長(zhǎng)度的數(shù)據(jù)行和可變長(zhǎng)度的數(shù)據(jù)行不加區(qū)分(所有數(shù)據(jù)行共用一個(gè)表頭部分,這個(gè)表頭部分存放著指向各個(gè)有關(guān)數(shù)據(jù)列的指針),所以使用char類型不見得會(huì)比使用varchar類型好。事實(shí)上,因?yàn)閏har類型通常要比varchar類型占用更多的空間,所以從減少空間占用量和減少磁盤i/o的角度,使用varchar類型反而更有利。

       (2)varchar(30)中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)引擎一樣。

     For example, a varchar(255) column can hold a string with a maximum length of 255 characters(字符而非字節(jié)),對(duì)于latin1, ‘a(chǎn)bcd’的L為4,存儲(chǔ)需要5個(gè)字節(jié);對(duì)于ucs2(雙字節(jié)字符),則需要10個(gè)字節(jié)存儲(chǔ)(最大長(zhǎng)度為510>255,故需要額外2個(gè)字節(jié))

       (3)int(20)中20的涵義

     20表示最大顯示寬度為20,但仍占4個(gè)字節(jié)存儲(chǔ),存儲(chǔ)范圍不變;

create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a));

create table int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a));

select * from int_test;
+------------+
| a          |
+------------+
| 0000000001 |
| 0000000002 |
| 0000000003 |
| 2147483648 |
+------------+

select * from int_test_4;
+------------+
| a          |
+------------+
|       0001 |
|       0002 |
|       0003 |
| 2147483648 |
+------------+

       (4)為什么MySQL這樣設(shè)計(jì)?

    對(duì)大多數(shù)應(yīng)用沒有意義,只是規(guī)定一些工具用來顯示字符的個(gè)數(shù);int(1)和int(20)存儲(chǔ)和結(jié)算均一樣。

感謝各位的閱讀!關(guān)于“Mysql中varchar與char的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

當(dāng)前題目:Mysql中varchar與char的區(qū)別有哪些
網(wǎng)站地址:http://jinyejixie.com/article30/ggsoso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)網(wǎng)頁(yè)設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)、電子商務(wù)

廣告

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

小程序開發(fā)