<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MySQL字段類型最全解析

          共 2127字,需瀏覽 5分鐘

           ·

          2021-01-29 13:21

          ? 前言:?


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


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


          ? 1.數(shù)值類型


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


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



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


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


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


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

          類型

          大小

          用途

          FLOAT4 字節(jié)單精度浮點數(shù)值
          DOUBLE8 字節(jié)雙精度浮點數(shù)值


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


          類型

          大小

          用途

          DECIMAL

          對DECIMAL(M,D) ,如果M>D,為M+2字節(jié) 否則為D+2

          精確小數(shù)值


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


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

          • M是最大位數(shù)(精度),范圍是1到65。可不指定,默認(rèn)值是10。

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


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


          ? 2.字符串類型


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



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


          char(M) 與 varchar(M) 中的的 M 表示保存的最大字符數(shù),單個字母、數(shù)字、中文等都是占用一個字符。char 適合存儲很短的字符串,或者所有值都接近同一個長度。例如,char 非常適合存儲密碼的 MD5 值,因為這是一個定長的值。對于字符串很長或者所要存儲的字符串長短不一的情況,varchar 更加合適。


          我們在定義字段最大長度時應(yīng)該按需分配,提前做好預(yù)估,能使用 varchar 類型就盡量不使用 text 類型。除非有存儲長文本數(shù)據(jù)需求時,再考慮使用 text 類型。


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

          ? 3.日期時間類型


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



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


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


          總結(jié):?


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


          推薦閱讀


          (點擊標(biāo)題可跳轉(zhuǎn)閱讀)

          簡單說幾個MySQL高頻面試題

          CHAR與VARCHAR面面觀

          INT類型知多少

          - End -

          動動手指轉(zhuǎn)發(fā)、在看
          是對我最大的鼓勵


          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  影音先锋成人av电影 | 狠狠se | 9l视频自拍蝌蚪9l自拍蝌蚪9l在线 | 亚洲无码黄色成人网站在线观看 | 日韩成人AV在线播放 |