mediumint一個(gè)中等大小整數(shù)。有符號的范圍是-8388608到8388607,無符號的范圍是0到16777215。
有些系統(tǒng)會(huì)采用該類型作為UID的類型,目的自然是為了壓縮數(shù)據(jù)庫的數(shù)據(jù)占用量,不過因?yàn)槠淙≈捣秶南拗?,一旦用戶量多?6777215以后,UID也無法繼續(xù)自增。
以下摘錄MYSQL手冊內(nèi)關(guān)于數(shù)值類型的概述:
數(shù)值類型概述
下面為數(shù)值列類型的概述。詳細(xì)信息參見11.2節(jié),“數(shù)值類型”。列存儲(chǔ)需求參見11.5節(jié),“列類型存儲(chǔ)需求”。
M指示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與存儲(chǔ)大小或類型包含的值的范圍無關(guān),相關(guān)描述見11.2節(jié),“數(shù)值類型”。
如果為一個(gè)數(shù)值列指定ZEROFILL,MySQL自動(dòng)為該列添加UNSIGNED屬性。

SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的一個(gè)別名。
在整數(shù)列定義中,SERIAL DEFAULT VALUE是NOT N ULL AUTO_INCREMENTUNIQUE的一個(gè)別名。
警告:應(yīng)當(dāng)清楚,當(dāng)使用在整數(shù)值(其中一個(gè)是UNSIGNED類型)之間使用減號時(shí),結(jié)果是無符號。參見12.8節(jié),“Cast函數(shù)和操作符”。
·BIT[(M)]
位字段類型。M表示每個(gè)值的位數(shù),范圍為從1到64。如果M被省略, 默認(rèn)為1。
·TINYINT[(M)] [UNSIGNED] [ZEROFILL]
很小的整數(shù)。帶符號的范圍是-128到127。無符號的范圍是0到255。
·BOOL,BOOLEAN
是TINYINT(1)的同義詞。zero值被視為假。非zero值視為真。
在將來,將根據(jù)標(biāo)準(zhǔn)SQL引入完全布爾類型的處理。
·SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
小的整數(shù)。帶符號的范圍是-32768到32767。無符號的范圍是0到65535。
·MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
中等大小的整數(shù)。帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。
·INT[(M)] [UNSIGNED] [ZEROFILL]
普通大小的整數(shù)。帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。
·INTEGER[(M)] [UNSIGNED] [ZEROFILL]
這是INT的同義詞。
·BIGINT[(M)] [UNSIGNED] [ZEROFILL]
大整數(shù)。帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。
應(yīng)清楚BIGINT列的下述內(nèi)容:
o使用帶符號的BIGINT或DOUBLE值進(jìn)行所有算法,因此除了位函數(shù),不應(yīng)使用大于9223372036854775807(63位)的無符號的大整數(shù)!如果這樣做,結(jié)果中的最后幾位可能出錯(cuò),這是由于將BIGINT值轉(zhuǎn)換為DOUBLE進(jìn)行四舍五入時(shí)造成的錯(cuò)誤。
MySQL可以在以下情況下處理BIGINT:
§當(dāng)使用整數(shù)在一個(gè)BIGINT列保存大的無符號的值時(shí)。
§在MIN(col_name)或MAX(col_name)中,其中col_name指BIGINT列。
§使用操作符(+,-,*等等)并且兩個(gè)操作數(shù)均為整數(shù)時(shí)。
o總是可以使用一個(gè)字符串在BIGINT列中保存嚴(yán)格整數(shù)值。在這種情況下,MySQL執(zhí)行字符串-數(shù)字轉(zhuǎn)換,其間不存在雙精度表示。
o當(dāng)兩個(gè)操作數(shù)均為整數(shù)值時(shí),-、+和*操作符使用BIGINT算法。這說明如果乘兩個(gè)大整數(shù)(或來自返回整數(shù)的函數(shù)),當(dāng)結(jié)果大于9223372036854775807時(shí),會(huì)得到意想不到的結(jié)果。
·FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
小(單精度)浮點(diǎn)數(shù)。允許的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。這些是理論限制,基于IEEE標(biāo)準(zhǔn)。實(shí)際的范圍根據(jù)硬件或操作系統(tǒng)的不同可能稍微小些。
M是小數(shù)縱位數(shù),D是小數(shù)點(diǎn)后面的位數(shù)。如果M和D被省略,根據(jù)硬件允許的限制來保存值。單精度浮點(diǎn)數(shù)精確到大約7位小數(shù)位。
如果指定UNSIGNED,不允許負(fù)值。
使用浮點(diǎn)數(shù)可能會(huì)遇到意想不到的問題,因?yàn)樵贛ySQL中的所有計(jì)算用雙精度完成。參見A.5.7節(jié),“解決與不匹配行有關(guān)的問題”。
·DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
普通大小(雙精度)浮點(diǎn)數(shù)。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。這些是理論限制,基于IEEE標(biāo)準(zhǔn)。實(shí)際的范圍根據(jù)硬件或操作系統(tǒng)的不同可能稍微小些。
M是小數(shù)總位數(shù),D是小數(shù)點(diǎn)后面的位數(shù)。如果M和D被省略,根據(jù)硬件允許的限制來保存值。雙精度浮點(diǎn)數(shù)精確到大約15位小數(shù)位。
如果指定UNSIGNED,不允許負(fù)值。
·DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)][UNSIGNED] [ZEROFILL]
為DOUBLE的同義詞。除了:如果SQL服務(wù)器模式包括REAL_AS_FLOAT選項(xiàng),REAL是FLOAT的同義詞而不是DOUBLE的同義詞。
·FLOAT(p) [UNSIGNED] [ZEROFILL]
浮點(diǎn)數(shù)。p表示精度(以位數(shù)表示),但MySQL只使用該值來確定是否結(jié)果列的數(shù)據(jù)類型為FLOAT或DOUBLE。如果p為從0到24,數(shù)據(jù)類型變?yōu)闆]有M或D值的FLOAT。如果p為從25到53,數(shù)據(jù)類型變?yōu)闆]有M或D值的DOUBLE。結(jié)果列范圍與本節(jié)前面描述的單精度FLOAT或雙精度DOUBLE數(shù)據(jù)類型相同。
FLOAT(p)語法與ODBC兼容。
·DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
壓縮的“嚴(yán)格”定點(diǎn)數(shù)。M是小數(shù)位數(shù)(精度)的總數(shù),D是小數(shù)點(diǎn)(標(biāo)度)后面的位數(shù)。小數(shù)點(diǎn)和(負(fù)數(shù))的‘-’符號不包括在M中。如果D是0,則值沒有小數(shù)點(diǎn)或分?jǐn)?shù)部分。DECIMAL整數(shù)最大位數(shù)(M)為65。支持的十進(jìn)制數(shù)的最大位數(shù)(D)是30。如果D被省略,默認(rèn)是0。如果M被省略, 默認(rèn)是10。
如果指定UNSIGNED,不允許負(fù)值。
所有DECIMAL列的基本計(jì)算(+,-,*,/)用65位精度完成。
·DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED][ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
是DECIMAL的同義詞。FIXED同義詞適用于與其它服務(wù)器的兼容性。
愛華網(wǎng)



