數據庫筆記5---數據類型


  數據類型用來指定一定的存儲格式、約束和有效範圍。MySQL支持的數據類型非常多,主要包括數值型、字符串類型、日期和時間類型。

  選擇正確的數據類型對於獲得高性能至關重要。

一、數值類型

1.整數類型

整數類型 字節 最小值 最大值
TINYINT 1 有符號-128、無符號0 有符號127 無符號255
SMALLINT 2 有符號-32768、無符號0 有符號32767 無符號65535
MEDIUMINT 3 有符號-8388608、無符號0 有符號8388607、無符號1677215
INT、INTEGER 4 有符號-2147483648、無符號0 有符號2147483647、無符號4294967295
BIGINT 8 有符號-9223372036854775808、無符號0 有符號9223372036854775807、無符號18446744073709551615
  1. 每種整數類型都有取值範圍,超出類型範圍的操作會導致"out of range"錯誤提示。
  2. 整型數據,MySQL還支持在類型名稱後面的小括號內指定顯示寬度,如int(5)表示當數值寬度小於5時在數字前面填滿寬度,如果不顯示指定寬度則默認爲int(11)。一般配合zerofill使用,顧名思義,zerofill就是用"0"填充的意思,在數字位數不夠的空間用字符"0"填滿。寬度格式不會對實際數據有任何影響,還是按照類型的實際精度進行保存。
  3. 如果一個列指定爲zerofill,則MySQL自動爲該列添加UNSIGNED屬性。

2.浮點數類型

  對於小數的表示, MYSQL分爲兩種方式:浮點數和定點數。浮點數包括 float(單精度)和 double(雙精度),而定點數則只有decimal一種表示。定點數在內部以字符串形式存放,比浮點數更精確,適合用來表示貨幣等精度高的數據。

  浮點數和定點數都可以用類型名稱後加“(M,D)”的方式來進行表示,“(M,D)”表示該值一共顯示M位數字(整數位+小數位),其中D位位於小數點後面,M和D又稱爲精度和標度。例如,定義爲 float(7,4)的一個列可以顯示爲-999.9999。MySQL保存值時進行四捨五入,因此如果在float(7,4) 列內插入9.00009,近似結果是999.0001。值得注意的是,浮點數後面跟“(M,D)”的用法是非標準用法,如果要用於數據庫的遷移,則最好不要這麼使用。 float和 double在不指定精度時,默認會按照實際的精度由實際的硬件和操作系統決定)來顯示,而 decimal在不指定精度時,默認的整數位爲10,默認的小數位爲0。

浮點數類型 字節 最小值 最大值
FLOAT 4 ±1.175494351E-38 ±3.402823466E+38
DOUBLE 8 ±2.2250738585072014E-308 ±1.7976931348623157E+308
DEC(M,D), DECIMAL(M,D) M+2 最大範圍與double相同,給定decimal的有效取值範圍由M和D決定

3.位類型

  BIT(M)類型,用於存放位字段值,BIT(M)可以用來存放多位二進制數,M範圍從1~64,如果不寫則默認爲1位。

位類型 字節 最小值 最大值
BIT(M) 1~8 BIT(1) BIT(64)

二、日期時間類型

日期和時間類型 字節 零值表示 最小值 最大值
DATE 4 0000-00-00 1000-01-01 9999-12-31
DATETIME 8 0000-00-00 00:00:00 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 00000000000000 19700101080001 2038年的某個時刻
TIME 3 00:00:00 -838:59:59 838:59:59
YEAR 1 0000 1901 2155

三、字符串類型

字符串類型 字節 描述及存儲需求
CHAR(M) M M爲0~255之間的整數
VARCHAR(M) M爲0~65536之間的整數,值得長度+1個字節
TINYBLOB 允許長度0~255字節,值得長度+1個字節
BLOB 允許長度0~65535字節,值得長度+2個字節
MEDUIMBLOB 允許長度0~167772150字節,值得長度+3個字節
LONGBLOB 允許長度0~4294967295,值得長度+4個字節
TINYTEXT 允許長度0~255字節,值得長度+2個字節
TEXT 允許長度0~65535字節,值得長度+2個字節
MEDIUMTEXT 允許長度0~167772150字節,值得長度+3個字節
LONGTEXT 允許長度0~4294967295字節,值得長度+4個字節
VARBINARY(M) 允許長度0~M個字節的邊長字節字符集,值得長度+1個字節
BINARY(M) M 允許長度0~M個字節的定長字節字符集
  • char和varchar很類似,都用來保存MySQL中較短的字符串。
  • char列的長度固定爲創建表時聲明的長度,長度可以是0~255的數值。
  • char列刪除尾部的空格,varchar則保留尾部的空格。
  • char適合存儲很短的字符串,或者所有值都接近同一個長度。對於經常變更的數據char也比varchar更好,因爲定長的char不容易產生碎片。
  • varchar適合於:字符串列的最大長度比平均長度大很多;列的更新很少所以碎片問題可忽略;使用了像UTF-8這樣複雜的字符集,每個字符使用不同的字節數進行存儲。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章