Mysql都支持哪些數據類型?

在設計數據庫表時,其中一項重要步驟便是選擇表中字段的數據類型。
如果你選擇的是mysql作爲數據庫,必須要清楚mysql到底支持哪些數據類型呢?
總體來說包括數值型、字符串類型、日期和時間類型這麼幾大類。

1、數值類型

數值類型中又細分爲整數類型、浮點數類型、定點數類型和位類型。下面分別述之。

整數類型

整數類型 佔用字節 範圍
TINYINT 1 有符號:[-128,127] 或無符號:[0,255]
SMALLINT 2 有符號:[-32768,32767]或無符號:[0,65535]
MEDIUMINT 3 有符號:[-8333608,8388607]或無符號:[0,1677215]
INT、INTEGER 4 有符號:[-21億多,21億多]或無符號:[0,42億多]
BIGINT 8 很大,19位數字的範圍

記住mysql的整數類型有5種,分別是tinyint、smallint、mediumint、int和bigint。
另外還有兩個特性:

  • 所有整數類型都有一個可選的屬性UNSIGNED(無符號),此時上限取值是原來的2倍。
  • 還有一個屬性是AUTO_INCREMENT(自增),該屬性只能用於整數類型。

浮點數類型

浮點數類型 字節 範圍
FLOAT 4 [1.175494351E-38,3.402823466E+38]
DOUBLE 8 [2.2…E-308,1.7…E+308]

定點數類型

定點數類型 字節 範圍
DECIMAL(M,D) M+2 最大取值範圍與DOUBLE相同,有效範圍由M,D決定

位類型

位類型 字節 範圍
BIT(M) 1-8 最小值BIT(1),最大值BIT(64)

浮點數和定點數都可以用(M,D)的方式來進行表示。
(M,D)表示該值一共顯示M位數字(整數位+小數位),其中D位位於小數點後面。

  • M:精度
  • D:標度
    注意在一些表述貨幣等精確數字的場景必須使用DECIMAL類型。
    BIT類型用來存放多爲二進制數,數據在插入BIT類型字段時,首先會轉換成二進制數。因此,直接使用SELECT命令將不會看到結果。可以用bin()或hex()函數進行讀取。

2、字符串類型

MySQL中提供了多種對字符數據的存儲類型,不同版本可能有所差異,本文以5.0版本爲例。

字符串類型 描述
CHAR(M) M爲0-255之間的整數
VARCHAR(M) M爲0-65535之間的整數
TINYBLOB 允許0-255字節
BLOB 允許0-65535字節
MEDIUBLOB 允許0-167772150字節
LONGBLOB 允許0-4294967295字節
TINYTEXT 允許0-255字節
TEXT 允許0-65535字節
MEDIUMTEXT 允許0-167772150字節
LONGTEXT 允許0-4294967295字節
VARBINARY(M) 允許長度0-M個字節的邊長字節字符串
BINARY(M) 允許0-M個字節的定長字節字符串

CHAR和VARCHAR很類似,都用來保存mysql中較短的字符串。二者的主要區別在於存儲方式不同:

  • CHAR列的長度固定爲創建時表明的長度;
  • 而VARCHAR列中的值爲可變長字符串。

比如存儲字符串“abc”,CHAR(5)佔用了5個字節,而VARCHAR(5)佔用3個字節。

3、日期時間類型

分類:

  • 表示年月日,用DATE
  • 表示年月日時分秒,用DATETIME
  • 表示時分秒,用TIME
日期時間類型 字節 範圍
DATE 4 1000-01-01到9999-12-31
DATETIME 8 1000-01-01 00:00:00到9999-12-31 23:59:59
TIMESTAMP 4 19700101080001到2038年某個時刻
TIME 3 -838:59:59到838:59:59
YEAR 1 1901到2155

注意TIMESTAMP有一個特點就是和時區相關。當插入日期時,會先轉換爲本地時區後存放;而從數據庫裏面取出時,也同樣需要將日期轉換爲本地時區後顯示。
查看當前時區的SQL:
show variables like 'time_zone';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章