MySQL資料庫的表是一個二維表,由一個或多個資料列構成。
每個資料列都有它的特定類型,該類型決定了MySQL如何看待該列資料,我們可以把整型數值存放到字元類型的列中,MySQL則會把它看成字串來處理。
MySQL中的列類型有三種:數值類、字串類和日期/時間類。
從大類來看列類型和數實值型別一樣,都是只有三種。但每種列類型都還可細分。
下面對各種列類型進行詳細介紹。
數值類的資料列類型
數值型的列類型包括整型和浮點型兩大類。
TINYINT:1位元組 非常小的正整數,帶符號:-128~127,不帶符號:0~255
SMALLINT:2位元組 小整數,帶符號:-32768~32767,不帶符號:0~65535
MEDIUMINT:3位元組 中等大小的整數,帶符號:-8388608~8388607,不帶符號:0~16777215
INT:4位元組 標準整數,帶符號:-2147483648~2147483647,不帶符號:0~4294967295
BIGINT:8位元組 大整數,帶符號:-9223372036854775808~9233372036854775807,不帶符號:0~18446744073709551615
FLOAT:4位元組 單精確度浮點數,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38
DOUBLE:8位元組 雙精確度浮點數,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308
DECIMAL:M+2位元組 以字串形式表示的浮點數,它的取值範圍可變,由M和D的值決定。
整型資料列類型
MySQL有五種整型資料列類型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。它們之間的區別是取值範圍不同,儲存空間也各不相同。
在整型資料列後加上UNSIGNED屬性可以禁止負數,取值從0開始。
聲明整型資料列時,我們可以為它指定個顯示寬度M(1~255),如INT(5),指定顯示寬度為5個字元,如果沒有給它指定顯示寬度,MySQL會為它指定一個預設值。顯示寬度只用於顯示,並不能限制取值範圍和佔用空間,如:INT(3)會佔用4個位元組的儲存空間,並且允許的最大值也不會是999,而是INT整型所允許的最大值。
浮點型資料列類型
MySQL有三種浮點型資料列類型,分別是:FLOAT,DOUBLE和DECIMAL。
浮點類資料類型有一個最大可表示值和一個最小非零可表示值,最小非零可表示值決定了該類型的精確度。
MySQL 4.0.2版之後,FLOAT和DOUBLE都可以指定UNSIGNED屬性。當指定該屬性時,取值範圍不平移到正數區間,而只是簡單地把浮點類型的負數部份去掉。
浮點類型也有M(1~255)和D(1~30,且不能大於M-2)。分別表示顯示寬度和小數位元。M和D在FLOAT和DOUBLE中是可選的,預設,當MySQL版本大於3.23.6時,FLOAT和DOUBLE類型將被儲存為硬體所支援的最大精度。DECIMAL的M和D值在MySQL3.23.6後可選,預設D值為0,M值為10。