Mysql 學習 ->數據類型篇(數值類型)


 

  1. 數據類型

 

整數類型

字節

最小值

最大值

TINYINT 1

有符號-128

無符號0

有符號 127

無符號 255

SMALLINT 2

有符號-32768

無符號0

有符號32767

無符號65535

MEDIUMINT 3

有符號 -8388608

無符號 0

有符號 8388608

無符號1677215

INT 4

有符號-2147483648

無符號0

有符號2147483647

無符號4294967295

BINGINT 8

有符號 -9223372036854775808

無符號 0

有符號9223372036854775807

無符號18446744073709551615

浮點數類型
字節
最小追
最大值
FLOAT 4

-+1.175494351E-38

-+3.402823466E+38

DOUBLE 8

-+2.2250738585072014E-308

-+1.7976931348623157E+308

定點數類型

字節

 

描述

DECIMAL(M,D) M+2

最大取值范圍與DOUBLE相同,給定DECIMAL的有效值范圍由M和D決定

 

位類型

字節

最小值

最大值

BIT(M) 1~8

BIT(1)

BIT(64)

  對於整數類型,Mysql支持類型名臣后面的小括號內指定顯示寬度,例如int(5),當數值寬度小於5位的時候在數字前面填滿寬度,一般配合zerofill使用。

  (zerofill就是 ‘0’填充的意思,在數字位數不夠的空間用字符0填滿)。

  

  如果插入的值大於寬度限制會不會報錯?

    答:不會對插入的數據有任何影響,還是會按照類型的實際精度進行保存,所有的整數類型都有一個可選屬性UNSIGNED(無符號),如果要在字段里面保存非負數或者需要較大的上限值時,可以用此選項,他的取值范圍下限取0,上限取原值的2倍。

  

  另外,整數類型還有一個屬性,AUTO_INCREMENT(自動增長),在需要產生唯一標識或順序時,可用這個屬性,只作用於整數類型,值一般從1開始,通常用在主鍵(PRIMARY KEY)上

  注:mysql中數值類型基本就是這些,在選擇數據類型的時候要根據應用時機發生的情況確定其取值范圍,最后根據確定的結果慎重選擇數據類型。

  對於小數的表示,Mysql分為定點型和浮點型:

    浮點型包括float(單精度)double(雙精度),而定點數則只有decimal一種表示,定點數在Mysql內部以字符串的形式存放,比浮點數更精確,適用於貨幣等精度高的數據

   float,double,decimal三者之間的區別?

    創建一張表分別定義

      

    分別往id1,id2,id3中插入 1.23

      

    在向id1,id2字段插入1.234,而id3中仍然插入1.23

    

    可以看出,其中id1和id2由於標度的限制,舍去了最后一位,數據變成1.23

    接着同時向id1,id2,id3字段中插入數據1.234

    

    此時發現,數據都插入進去了,但是報了一個warning錯誤,id3這個記錄是不能插入的,跟數據校檢有關,涉及到sql mode的知識,之后在講

    將表中的精度和標度都去掉,這次插入1.234

    

    插入數據
    

    可以發現,id1和id2字段可以正常插入數據,id3小數位被截斷了,所以可以看出,浮點數如果不寫精度和標度,則會按實際情況顯示值,如果有精度和標度,則會四舍五入

    定點數如果不寫精度和標度,則會按系統默認值decimal(10,0)來進行操作,如果數超過精度和標度會報錯

 

    對於BIT類型,用於存放位字段值,BIT(M)可以存放多為二進制數,M范圍1~64,如果不寫則默認1,對於位字段,直接使用select命令不會看到結果,可以用bin()(顯示二進制格式)或者hex()(顯示十六進制格式)函數進行讀取

    

    

    用bin()和hex()函數:

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM