數值類的數據列類型
數值型的列類型包括整型和浮點型兩大類。

數據列類型 | 存儲空間 | 描述 |
---|---|---|
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的值決定。 |
1.?整型數據列類型
MySQL有五種整型數據列類型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。它們之間的區別是取值范圍不同,存儲空間也各不相同。在整型數據列后加上UNSIGNED屬性可以禁止負數,取值從0開始。
聲 明整型數據列時,我們可以為它指定個顯示寬度M(1~255),如INT(5),指定顯示寬度為5個字符,如果沒有給它指定顯示寬度,MySQL會為它指 定一個默認值。顯示寬度只用于顯示,并不能限制取值范圍和占用空間,如:INT(3)會占用4個字節的存儲空間,并且允許的最大值也不會是999,而是 INT整型所允許的最大值。
2.?浮點型數據列類型
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。
3.?如何選擇數值類數據列類型?
為 了節省存儲空間和提高數據庫處理效率,我們應根據應用數據的取值范圍來選擇一個最適合的數據列類型。如果把一個超出數據列取值范圍的數存入該列,則 MySQL就會截短該值,如:我們把99999存入SMALLINT(3)數據列里,因為SMALLINT(3)的取值范圍是-32768~32767, 所以就會被截短成32767存儲。顯示寬度3不會影響數值的存儲。只影響顯示。
對于浮點數據列,存入的數值會被該列定義的小數位進行四舍五入。如把一個1.234存入FLOAT(6.1)數據列中,結果是1.2。
DECIMAL 與FLOAT和DOUBLE的區別是:DECIMAL類型的值是以字符串的形式被儲存起來的,它的小數位數是固定的。它的優點是,不會象FLOAT和 DOUBLE類型數據列那樣進行四舍五入而產生誤差,所以很適合用于財務計算;而它的缺點是:由于它的存儲格式不同,CPU不能對它進行直接運算,從而影 響運算效率。DECIMAL(M,D)總共要占用M+2個字節。
4.?數值類數據列的屬性
-
ZEROFILL屬性適用于所有數值類數據列類型,作用是,如果數值的寬度小于定義的顯示寬度,則在數值前填充0。
-
UNSIGNED屬性不允許數據列出現負數。
-
AUTO_INCREMENT屬性可生成獨一無二的數字序列。只對整數類的數據列有效。
-
NULL和NOT NULL屬性設置數據列是否可為空。
-
DEFAULT屬性可為數據列指定默認值。