top
Loading...
11.1.1.數值類型概述
11.1.1. 數值類型概述

下面為數值列類型的概述。詳細信息參見11.2節,“數值類型”。列存儲需求參見11.5節,“列類型存儲需求”。

M指示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與存儲大小或類型包含的值的范圍無關,相關描述見11.2節,“數值類型”。

如果為一個數值列指定ZEROFILLMySQL自動為該列添加UNSIGNED屬性。

SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一個別名。

在整數列定義中,SERIAL DEFAULT VALUENOT NULL AUTO_INCREMENT UNIQUE的一個別名。

警告:應當清楚,當使用在整數值(其中一個是UNSIGNED類型)之間使用減號時,結果是無符號。參見12.8節,“Cast函數和操作符”。

·         BIT[(M)]

位字段類型。M表示每個值的位數,范圍為從164。如果M被省略, 默認為1

·         TINYINT[(M)] [UNSIGNED] [ZEROFILL]

很小的整數。帶符號的范圍是-128127。無符號的范圍是0255

·         BOOLBOOLEAN

TINYINT(1)的同義詞。zero值被視為假。非zero值視為真。

在將來,將根據標準SQL引入完全布爾類型的處理。

·         SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

小的整數。帶符號的范圍是-3276832767。無符號的范圍是065535

·         MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

中等大小的整數。帶符號的范圍是-83886088388607。無符號的范圍是016777215

·         INT[(M)] [UNSIGNED] [ZEROFILL]

普通大小的整數。帶符號的范圍是-21474836482147483647。無符號的范圍是04294967295

·         INTEGER[(M)] [UNSIGNED] [ZEROFILL]

這是INT的同義詞。

·         BIGINT[(M)] [UNSIGNED] [ZEROFILL]

大整數。帶符號的范圍是-92233720368547758089223372036854775807。無符號的范圍是018446744073709551615

應清楚BIGINT列的下述內容:

o        使用帶符號的BIGINTDOUBLE值進行所有算法,因此除了位函數,不應使用大于9223372036854775807(63)的無符號的大整數! 如果這樣做,結果中的最后幾位可能出錯,這是由于將BIGINT值轉換為DOUBLE進行四舍五入時造成的錯誤。

MySQL可以在以下情況下處理BIGINT

§         當使用整數在一個BIGINT列保存大的無符號的值時。

§         MIN(col_name)MAX(col_name)中,其中col_nameBIGINT列。

§         使用操作符(+-*等等)并且兩個操作數均為整數時。

o        總是可以使用一個字符串在BIGINT列中保存嚴格整數值。在這種情況下,MySQL執行字符串-數字轉換,其間不存在雙精度表示。

o        當兩個操作數均為整數值時,-+* 操作符使用BIGINT算法。這說明如果乘兩個大整數(或來自返回整數的函數),當結果大于9223372036854775807時,會得到意想不到的結果。

·         FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

(單精度)浮點數。允許的值是-3.402823466E+38-1.175494351E-3801.175494351E-383.402823466E+38。這些是理論限制,基于IEEE標準。實際的范圍根據硬件或操作系統的不同可能稍微小些。

M是小數縱位數,D是小數點后面的位數。如果MD被省略,根據硬件允許的限制來保存值。單精度浮點數精確到大約7位小數位。

如果指定UNSIGNED,不允許負值。

使用浮點數可能會遇到意想不到的問題,因為在MySQL中的所有計算用雙精度完成。參見A.5.7節,“解決與不匹配行有關的問題”。

·         DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

普通大小(雙精度)浮點數。允許的值是-1.7976931348623157E+308-2.2250738585072014E-30802.2250738585072014E-3081.7976931348623157E+308。這些是理論限制,基于IEEE標準。實際的范圍根據硬件或操作系統的不同可能稍微小些。

M是小數總位數,D是小數點后面的位數。如果MD被省略,根據硬件允許的限制來保存值。雙精度浮點數精確到大約15位小數位。

如果指定UNSIGNED,不允許負值。

·         DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

DOUBLE的同義詞。除了:如果SQL服務器模式包括REAL_AS_FLOAT選項,REALFLOAT的同義詞而不是DOUBLE的同義詞。

·         FLOAT(p) [UNSIGNED] [ZEROFILL]

浮點數。p表示精度(以位數表示),但MySQL只使用該值來確定是否結果列的數據類型為FLOATDOUBLE。如果p為從024,數據類型變為沒有MD值的FLOAT。如果p為從2553,數據類型變為沒有MD值的DOUBLE。結果列范圍與本節前面描述的單精度FLOAT或雙精度DOUBLE數據類型相同。

FLOAT(p)語法與ODBC兼容。

·         DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

壓縮的“嚴格”定點數。M是小數位數(精度)的總數,D是小數點(標度)后面的位數。小數點和(負數)的‘-’符號不包括在M中。如果D0,則值沒有小數點或分數部分。DECIMAL整數最大位數(M)65。支持的十進制數的最大位數(D)30。如果D被省略, 默認是0。如果M被省略, 默認是10

如果指定UNSIGNED,不允許負值。

所有DECIMAL列的基本計算(+-*/)65位精度完成。

·         DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]

DECIMAL的同義詞。FIXED同義詞適用于與其它服務器的兼容性。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/column-types.html
北斗有巢氏 有巢氏北斗