站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        最全解析:MySQL字段類型

        本篇文章給大家?guī)?lái)了關(guān)于mysql字段類型的相關(guān)知識(shí),做了個(gè)總結(jié),希望對(duì)大家有幫助。

        最全解析:MySQL字段類型

        前言:

        要了解一個(gè)數(shù)據(jù)庫(kù),我們必須了解其支持的數(shù)據(jù)類型。MySQL 支持大量的字段類型,其中常用的也有很多。前面文章我們也講過(guò) int 及 varchar 類型的用法,但一直沒(méi)有全面講過(guò)字段類型,本篇文章我們將把字段類型一網(wǎng)打盡,講一講常用字段類型的用法。

        常用的字段類型大致可以分為數(shù)值類型字符串類型日期時(shí)間類型三大類,下面我們按照分類依次來(lái)介紹下。

        1.數(shù)值類型

        數(shù)值類型大類又可以分為整型浮點(diǎn)型定點(diǎn)型三小類。

        整型主要用于存儲(chǔ)整數(shù)值,主要有以下幾個(gè)字段類型:

        最全解析:MySQL字段類型

        整型經(jīng)常被用到,比如 tinyint、int、bigint 。默認(rèn)是有符號(hào)的,若只需存儲(chǔ)無(wú)符號(hào)值,可增加 unsigned 屬性。

        int(M)中的 M 代表最大顯示寬度,并不是說(shuō) int(1) 就不能存儲(chǔ)數(shù)值10了,不管設(shè)定了顯示寬度是多少個(gè)字符,int 都是占用4個(gè)字節(jié),即int(5)和int(10)可存儲(chǔ)的范圍一樣。

        存儲(chǔ)字節(jié)越小,占用空間越小。所以本著最小化存儲(chǔ)的原則,我們要盡量選擇合適的整型,例如:存儲(chǔ)一些狀態(tài)值或人的年齡可以用 tinyint ;主鍵列,無(wú)負(fù)數(shù),建議使用 int unsigned 或者 bigint unsigned,預(yù)估字段數(shù)字取值會(huì)超過(guò) 42 億,使用 bigint 類型。

        浮點(diǎn)型主要有 float,double 兩個(gè),浮點(diǎn)型在數(shù)據(jù)庫(kù)中存放的是近似值,例如float(6,3),如果插入一個(gè)數(shù)123.45678,實(shí)際數(shù)據(jù)庫(kù)里存的是123.457,但總個(gè)數(shù)還以實(shí)際為準(zhǔn),即6位,整數(shù)部分最大是3位。 float 和 double 平時(shí)用的不太多。

        最全解析:MySQL字段類型

        定點(diǎn)型字段類型有 DECIMAL 一個(gè),主要用于存儲(chǔ)有精度要求的小數(shù)。

        最全解析:MySQL字段類型

        DECIMAL 從 MySQL 5.1 引入,列的聲明語(yǔ)法是 DECIMAL(M,D) 。 NUMERIC 與 DECIMAL 同義,如果字段類型定義為 NUMERIC ,則將自動(dòng)轉(zhuǎn)成 DECIMAL 。

        對(duì)于聲明語(yǔ)法 DECIMAL(M,D) ,自變量的值范圍如下:

        • M是最大位數(shù)(精度),范圍是1到65。可不指定,默認(rèn)值是10。
        • D是小數(shù)點(diǎn)右邊的位數(shù)(小數(shù)位)。范圍是0到30,并且不能大于M,可不指定,默認(rèn)值是0。

        例如字段 salary DECIMAL(5,2),能夠存儲(chǔ)具有五位數(shù)字和兩位小數(shù)的任何值,因此可以存儲(chǔ)在salary列中的值的范圍是從-999.99到999.99。

        2.字符串類型

        字符串類型也經(jīng)常用到,常用的幾個(gè)類型如下表:

        最全解析:MySQL字段類型

        其中 char 和 varchar 是最常用到的。char 類型是定長(zhǎng)的,MySQL 總是根據(jù)定義的字符串長(zhǎng)度分配足夠的空間。當(dāng)保存 char 值時(shí),在它們的右邊填充空格以達(dá)到指定的長(zhǎng)度,當(dāng)檢索到 char 值時(shí),尾部的空格被刪除掉。varchar 類型用于存儲(chǔ)可變長(zhǎng)字符串,存儲(chǔ)時(shí),如果字符沒(méi)有達(dá)到定義的位數(shù),也不會(huì)在后面補(bǔ)空格。

        char(M) 與 varchar(M) 中的的 M 表示保存的最大字符數(shù),單個(gè)字母、數(shù)字、中文等都是占用一個(gè)字符。char 適合存儲(chǔ)很短的字符串,或者所有值都接近同一個(gè)長(zhǎng)度。例如,char 非常適合存儲(chǔ)密碼的 MD5 值,因?yàn)檫@是一個(gè)定長(zhǎng)的值。對(duì)于字符串很長(zhǎng)或者所要存儲(chǔ)的字符串長(zhǎng)短不一的情況,varchar 更加合適。

        我們?cè)诙x字段最大長(zhǎng)度時(shí)應(yīng)該按需分配,提前做好預(yù)估,能使用 varchar 類型就盡量不使用 text 類型。除非有存儲(chǔ)長(zhǎng)文本數(shù)據(jù)需求時(shí),再考慮使用 text 類型。

        BLOB 類型主要用于存儲(chǔ)二進(jìn)制大對(duì)象,例如可以存儲(chǔ)圖片,音視頻等文件。日常很少用到,有存儲(chǔ)二進(jìn)制字符串時(shí)可以考慮使用。

        3.日期時(shí)間類型

        MySQL支持的日期和時(shí)間類型有 YEARTIMEDATEDATETIMETIMESTAMP,幾種類型比較如下:

        最全解析:MySQL字段類型

        涉及到日期和時(shí)間字段類型選擇時(shí),根據(jù)存儲(chǔ)需求選擇合適的類型即可。

        關(guān)于 DATETIME 與 TIMESTAMP 兩種類型如何選用,可以按照存儲(chǔ)需求來(lái),比如要求存儲(chǔ)范圍更廣,則推薦使用 DATETIME ,如果只是存儲(chǔ)當(dāng)前時(shí)間戳,則可以使用 TIMESTAMP 類型。不過(guò)值得注意的是,TIMESTAMP 字段數(shù)據(jù)會(huì)隨著系統(tǒng)時(shí)區(qū)而改變但 DATETIME 字段數(shù)據(jù)不會(huì)。總體來(lái)說(shuō) DATETIME 使用范圍更廣。

        總結(jié):

        本篇文章主要介紹了 MySQL 中常用的字段類型,平時(shí)用到的字段類型基本都在這里了,以一張思維導(dǎo)圖總結(jié)如下:

        最全解析:MySQL字段類型

        推薦學(xué)習(xí):mysql視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 日韩经典精品无码一区| 欧美成人精品高清在线观看| 无码乱码观看精品久久| 久久精品一区二区国产| 四虎国产精品永久免费网址| 久久精品不卡| 99精品在线免费| 91国在线啪精品一区| 综合人妻久久一区二区精品| 精品无码三级在线观看视频| 亚洲国产精品自在线一区二区| 国内精品久久久久影院优| 最新国产乱人伦偷精品免费网站 | 亚洲国产精品成人| 国产麻豆精品入口在线观看| 99久免费精品视频在线观看| 精品日产一区二区三区手机| 91视频精品全国免费观看| 精品久久久无码人妻中文字幕豆芽| 亚洲精品天堂成人片?V在线播放| 精品无码专区亚洲| 国产精品片在线观看手机版| 亚洲天堂久久精品| 2020最新久久久视精品爱| 久久精品国产精品国产精品污| 8AV国产精品爽爽ⅴa在线观看| 久久精品无码午夜福利理论片| 无码国产精品一区二区免费vr| 亚洲AⅤ永久无码精品AA| 日韩精品欧美亚洲| 欧美久久久久久午夜精品 | 98香蕉草草视频在线精品看| 久久精品国产半推半就| 精品无人区麻豆乱码1区2区 | 四虎国产精品免费久久久| 欧美一区二区精品系列在线观看| 国产精品久久国产精品99盘 | 国产精品日韩欧美一区二区三区| 久久精品夜夜夜夜夜久久| 国内精品伊人久久久久AV影院| 国产精品久线在线观看|