• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            MySQL數(shù)據(jù)表類型 數(shù)據(jù)類型

            表類型
              MySQL的數(shù)據(jù)表類型很多,其中比較重要的是MyISAM,InnoDB這兩種。
              這兩種類型各有優(yōu)缺點(diǎn),需要根據(jù)實(shí)際情況選擇適合的,MySQL支持對(duì)不同的表設(shè)置不同的類型。下面做個(gè)對(duì)比:
              MyISAM表類型是一種比較成熟穩(wěn)定的表類型,但是MyISAM對(duì)一些功能不支持。
               MyISAM  InnoDB
            事務(wù)  不支持  支持
            數(shù)據(jù)行鎖定  不支持,只有表鎖定  支持
            外鍵約束  不支持   支持
            表空間大小  相對(duì)小 相對(duì)大,最大是2倍 
            全文索引 支持  不支持 
            GIS數(shù)據(jù)  支持  不支持 
            COUNT問(wèn)題  無(wú)  執(zhí)行COUNT(*)查詢時(shí),速度慢 
             
              一般情況下我覺(jué)得選擇MyISAM就行,如果需要事務(wù),或者需要很多用戶同時(shí)修改某個(gè)數(shù)據(jù)表里的數(shù)據(jù)時(shí),可以考慮InnoDB數(shù)據(jù)表。
             
            數(shù)據(jù)類型
            1.整型(xxxint)
             MySQL數(shù)據(jù)類型  含義
             tinyint(m) 1個(gè)字節(jié)表示(-128~127)
             smallint(m) 2個(gè)字節(jié)表示(-32768~32767) 
             mediumint(m) 3個(gè)字節(jié)表示(-8388608~8388607) 
             int(m) 4個(gè)字節(jié)表示(-2147483648~2147483647) 
             bigint(m) 8個(gè)字節(jié)表示(+-9.22*10的18次方) 
            右側(cè)的取值范圍是在未加unsigned關(guān)鍵字的情況下,如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值范圍為(0~256)。
            書(shū)上說(shuō)int(m)括弧里的m是表示SELECT查詢結(jié)果集中的顯示寬度,并不影響實(shí)際的取值范圍,我測(cè)了一下,定義一個(gè)字段number 類型為int(4),插入一條記錄"123456",用mysql query broswer執(zhí)行SELECT查詢,返回的結(jié)果集中123456正確顯示,沒(méi)有影響到顯示的寬度,不知道這個(gè)m有什么用。

            2.浮點(diǎn)型(float和double)
            MySQL數(shù)據(jù)類型 含義 
             float(m,d) 單精度浮點(diǎn)型,8位精度(4字節(jié)),m是十進(jìn)制數(shù)字的總個(gè)數(shù),
            d是小數(shù)點(diǎn)后面的數(shù)字個(gè)數(shù)。
             double(m,d) 雙精度浮點(diǎn)型,16位精度(8字節(jié))
            參數(shù)m只影響顯示效果,不影響精度,d卻不同,會(huì)影響到精度。
            比如設(shè)一個(gè)字段定義為float(5,3),如果插入一個(gè)數(shù)123.45678,實(shí)際數(shù)據(jù)庫(kù)里存的是123.457,小數(shù)點(diǎn)后面的數(shù)別四舍五入截成457了,但總個(gè)數(shù)不受到限制(6位,超過(guò)了定義的5位)。

            3.定點(diǎn)數(shù)(decimal)
            decimal(m,d)  定點(diǎn)類型
            浮點(diǎn)型在數(shù)據(jù)庫(kù)中存放的是近似值,而定點(diǎn)類型在數(shù)據(jù)庫(kù)中存放的是精確值。參數(shù)m是定點(diǎn)類型數(shù)字的最大個(gè)數(shù)(精度),范圍為0~65,d小數(shù)點(diǎn)右側(cè)數(shù)字的個(gè)數(shù),范圍為0~30,但不得超過(guò)m。
            對(duì)定點(diǎn)數(shù)的計(jì)算能精確到65位數(shù)字。

            4.字符串(char,varchar,xxxtext)
            MySQL數(shù)據(jù)類型 含義 
            char(n)  固定長(zhǎng)度的字符串,最多255個(gè)字符
            varchar(n)  固定長(zhǎng)度的字符串,最多65535個(gè)字符
            tinytext  可變長(zhǎng)度字符串,最多255個(gè)字符 
            text  可變長(zhǎng)度字符串,最多65535個(gè)字符 
            mediumtext  可變長(zhǎng)度字符串,最多2的24次方-1個(gè)字符 
            longtext  可變長(zhǎng)度字符串,最多2的32次方-1個(gè)字符 
            char和varchar:
            1.都可以通過(guò)指定n,來(lái)限制存儲(chǔ)的最大字符數(shù)長(zhǎng)度,char(20)和varchar(20)將最多只能存儲(chǔ)20個(gè)字符,超過(guò)的字符將會(huì)被截掉。n必須小于該類型允許的最大字符數(shù)。
            2.char類型指定了n之后,如果存入的字符數(shù)小于n,后面將會(huì)以空格補(bǔ)齊,查詢的時(shí)候再將末尾的空格去掉,所以char類型存儲(chǔ)的字符串末尾不能有空格,varchar不受此限制。
            3.內(nèi)部存儲(chǔ)的機(jī)制不同。char是固定長(zhǎng)度,char(4)不管是存一個(gè)字符,2個(gè)字符或者4個(gè)字符(英文的),都將占用4個(gè)字節(jié),varchar是存入的實(shí)際字符數(shù)+1個(gè)字節(jié)(n<=255)或2個(gè)字節(jié)(n>255),所以varchar(4),存入一個(gè)字符將占用2個(gè)字節(jié),2個(gè)字符占用3個(gè)字節(jié),4個(gè)字符占用5個(gè)字節(jié)。
            4.char類型的字符串檢索速度要比varchar類型的快。

            varchar和text:
            1.都是可變長(zhǎng)度的,最多能存儲(chǔ)65535個(gè)字符。
            2.varchar可指定n,text不能指定,內(nèi)部存儲(chǔ)varchar是存入的實(shí)際字符數(shù)+1個(gè)字節(jié)(n<=255)或2個(gè)字節(jié)(n>255),text是實(shí)際字符數(shù)+2個(gè)字節(jié)。
            3.text類型不能有默認(rèn)值。
            4.varchar可直接創(chuàng)建索引,text創(chuàng)建索引要指定前多少個(gè)字符。查詢速度varchar要快于text,在都創(chuàng)建了索引的情況下,text的索引好像沒(méi)起作用,參見(jiàn)這篇文章:http://forums.mysql.com/read.php?24,105964,105964

            5.二進(jìn)制數(shù)據(jù)(xxxBlob)
            XXXBLOB和xxxtext是對(duì)應(yīng)的,不過(guò)存儲(chǔ)方式不同,xxxTEXT是以文本方式存儲(chǔ)的,如果存儲(chǔ)英文的話區(qū)分大小寫(xiě),而xxxBlob是以二進(jìn)制方式存儲(chǔ)的,不區(qū)分大小寫(xiě)。
            xxxBlob存儲(chǔ)的數(shù)據(jù)只能整體讀出。
            xxxTEXT可以指定字符集,xxxblob不用指定字符集。

            6.日期時(shí)間類型(date,time,datetime,timestamp)
            MySQL數(shù)據(jù)類型 含義 
            date 日期'2008-12-2' 
            time  時(shí)間'12:25:36' 
            datetime 日期時(shí)間'2008-12-2 22:06:44' 
            timestamp  不固定
            timestamp比較特殊,如果定義一個(gè)字段的類型為timestamp,這個(gè)字段的時(shí)間會(huì)在其他字段修改的時(shí)候自動(dòng)刷新。所以這個(gè)數(shù)據(jù)類型的字段可以存放這條記錄最后被修改的時(shí)間,而不是真正來(lái)的存放時(shí)間。

            數(shù)據(jù)類型的屬性
            MySQL關(guān)鍵字 含義 
            NULL  數(shù)據(jù)列可包含NULL值
            NOT NULL 數(shù)據(jù)列不允許包含NULL值 
            DEFAULT xxx 默認(rèn)值,如果插入記錄的時(shí)候沒(méi)有指定值,將取這個(gè)默認(rèn)值 
            PRIMARY KEY  主鍵 
            AUTO_INCREMENT  遞增,如果插入記錄的時(shí)候沒(méi)有指定值,則在上一條記錄的值上加1,僅適用于整數(shù)類型 
            UNSIGNED  無(wú)符號(hào) 
            CHARACTER SET name  指定一個(gè)字符集 

            posted on 2009-05-27 17:01 大龍 閱讀(346) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            精品久久久久久国产91| 久久综合久久综合久久综合| 国产农村妇女毛片精品久久| 国产精品久久久久影院嫩草| 亚洲国产成人久久精品影视| 日韩电影久久久被窝网| 综合网日日天干夜夜久久| 99久久99久久久精品齐齐| 国产午夜福利精品久久| 欧美成人免费观看久久| 91精品国产色综合久久| 思思久久好好热精品国产| 国产精品欧美久久久天天影视| 久久精品国产一区二区电影| 精品久久久久久中文字幕大豆网 | 久久久久中文字幕| 欧美成人免费观看久久| 国产韩国精品一区二区三区久久 | 久久精品国产一区二区三区| 久久香蕉国产线看观看精品yw| 国产精品gz久久久| 精品国产乱码久久久久久1区2区| 中文字幕精品久久久久人妻| 欧美日韩中文字幕久久伊人| 久久久久人妻一区精品性色av| 久久中文精品无码中文字幕 | 亚洲Av无码国产情品久久| 女人香蕉久久**毛片精品| 久久亚洲精精品中文字幕| 超级碰碰碰碰97久久久久| 久久久久国产一区二区| 91亚洲国产成人久久精品网址 | 久久亚洲春色中文字幕久久久| 亚洲国产高清精品线久久| 久久久精品国产Sm最大网站| 色综合久久天天综合| 国产午夜免费高清久久影院| 色综合久久久久久久久五月| 久久人人爽人人爽人人片AV不| 久久精品国产清自在天天线| 久久精品国产亚洲AV不卡|