Mysql都支持哪些數據類型?

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

一、數值類型

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

整數類型

整數類型 佔用字節 範圍
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()函數進行讀取。

二、字符串類型

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中較短的字符串。兩者的主要區別在於存儲方式不一樣:code

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

好比存儲字符串「abc」,CHAR(5)佔用了5個字節,而VARCHAR(5)佔用3個字節。字符串

三、日期時間類型

分類:table

  • 表示年月日,用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';class

相關文章
相關標籤/搜索