MySQL 5.7參考手冊_11.1 數(shù)據(jù)類型概覽

11.1 數(shù)據(jù)類型概覽

11.1.1 數(shù)字類型概覽
11.1.2 日期和時間類型概覽
11.1.3 字符串類型概覽

11.1.1 數(shù)字類型概覽

這部分是數(shù)字類型的概覽具滴,有關數(shù)字類型的屬性詳情信息可以查看11.2 數(shù)字類型知押,有關數(shù)字類型的存儲要求可以查看11.8 數(shù)據(jù)類型的存儲要求稻艰。

對于整數(shù)類型涯塔,M表示數(shù)據(jù)的顯示寬度伤锚,這個寬度最大為255琼梆,這個值與整數(shù)類型的取值范圍無關捶码。詳情請查看11.2 數(shù)字類型撕蔼。

對于浮點類型豁鲤,M表示可以存儲的數(shù)字總數(shù)。

如果對數(shù)字類型的列指定ZEROFILL鲸沮,MySQL會自動添加unsigned屬性到列中琳骡。

數(shù)字類型可以是unsigned,也可以是signed讼溺,默認為signed楣号,所以指定signed可以被省略。

SERIAL是BIGINT UNSIGNED AUTO_INCREMENT UNIQUE的別名。

注意
如果對整數(shù)進行減法運算炫狱,當其中一個整數(shù)為unsigned藻懒,那么結果為unsigned,除非MySQL mode的NO_UNSIGNED_SUBTRACTION被設置為enable视译,詳情請查看12.10 Cast Functions and Operators嬉荆。

  • BIT[(M)]
    bit類型。M表示每個值的位數(shù)憎亚,取值范圍為1到64员寇,如果省略了M,默認為1第美。
  • TINYINT[(M)][UNSIGNED][ZEROFILL]
    非常小的整數(shù)蝶锋,signed時取值范圍為-128到127,unsigned時取值范圍為0到255什往。
  • BOOL, BOOLEAN
    這些類型是TINYINT(1)的同義詞扳缕,0表示false,非0表示true别威。
mysql> select if(0, "true", "false");
+------------------------+
| if(0, "true", "false") |
+------------------------+
| false                  |
+------------------------+
1 row in set (0.00 sec)

mysql> select if(1, "true", "false");
+------------------------+
| if(1, "true", "false") |
+------------------------+
| true                   |
+------------------------+
1 row in set (0.00 sec)

mysql> select if(2, "true", "false");
+------------------------+
| if(2, "true", "false") |
+------------------------+
| true                   |
+------------------------+
1 row in set (0.00 sec)

TRUE和FALSE分別是并且只是1和0的別名躯舔,如下所示:

mysql> select if(0=false, "true", "false");
+------------------------------+
| if(0=false, "true", "false") |
+------------------------------+
| true                         |
+------------------------------+
1 row in set (0.00 sec)

mysql> select if(1=true, "true", "false");
+-----------------------------+
| if(1=true, "true", "false") |
+-----------------------------+
| true                        |
+-----------------------------+
1 row in set (0.00 sec)

mysql> select if(2=true, "true", "false");
+-----------------------------+
| if(2=true, "true", "false") |
+-----------------------------+
| false                       |
+-----------------------------+
1 row in set (0.00 sec)

mysql> select if(2=false, "true", "false");
+------------------------------+
| if(2=false, "true", "false") |
+------------------------------+
| false                        |
+------------------------------+
1 row in set (0.00 sec)

從最后兩條語句的結果可以看出,2既不等于1也不等于0省古。

  • SMALLINT[(M)][UNSIGNED][ZEROFILL]
    較小范圍的整形數(shù)據(jù)類型粥庄,signed取值為-32768到32767,unsigned取值為0到65535豺妓。

  • MEDIUMINT[(M)][UNSIGNED][ZEROFILL]
    中等范圍的整形數(shù)據(jù)類型惜互,signed取值為-8388608到8388607,unsigned取值為16777215琳拭。

  • INT[(M)][UNSIGNED][ZEROFILL]
    普通范圍的整形數(shù)據(jù)類型训堆,signed取值為-2147483648到2147483647,unsiged取值為4294967295白嘁。

  • INTEGER[(M)][UNSIGNED][ZEROFILL]
    INT數(shù)據(jù)類型的同義詞坑鱼。

  • BIGINT[(M)][UNSIGNED][ZEROFILL]
    大范圍的整形數(shù)據(jù)類型,signed取值為-9223372036854775808到9223372036854775807絮缅,unsigned取值為18446744073709551615鲁沥。
    SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的別名。
    關于BIGINT列耕魄,需要注意以下事項:

    • 所有的運算都是使用signed的BIGINT或DOUBLE進行的黍析,所以,除了bit函數(shù)屎开,不要使用大于9223372036854775807(63位)的無符號整數(shù)阐枣,如果使用了马靠,可能會導致運算結果的一些最后的數(shù)字是錯誤的,因為在BIGINT轉為DOUBLE時會出現(xiàn)四舍五入錯誤蔼两。
      MySQL可以在以下幾種情況中處理BIGINT:
      • 在BIGINT列中甩鳄,使用整數(shù)存儲一個大的無符號數(shù)值;
      • 對BIGINT列使用MIN(col_name)或MAX(col_name)函數(shù)额划;
      • 對兩個都是整數(shù)的操作數(shù)使用 +妙啃,-,*等運算符俊戳。
    • 在BIGINT列中揖赴,使用字符串存儲一個精確的整數(shù)值,此時抑胎,MySQL會執(zhí)行字符串到數(shù)字的轉換燥滑,這個過程不涉及中間的雙精度表示;
    • +阿逃,-铭拧,*等運算使用BIGINT進行計算,這意味著恃锉,如果對兩個大整數(shù)(或函數(shù)返回的整數(shù)結果)相乘搀菩,當計算結果大于9223372036854775807時,可能會得到意外的結果破托。
  • DECIMAL[(M[,D])][UNSIGNED][ZEROFILL]
    定點數(shù)肪跋。M是數(shù)字總位數(shù)(精度),D是小數(shù)點后的位數(shù)(數(shù)值范圍)土砂,小數(shù)點和-號(對于負數(shù))不計入M澎嚣,如果D為0,則沒有小數(shù)部分和小數(shù)點瘟芝,DECIMAL支持的最大位數(shù)(M)為65,最大小數(shù)位數(shù)(D)為30褥琐,如果省略列D锌俱,則默認值為0,省略列M敌呈,默認值為10贸宏。
    如果指定列UNSIGNED,不允許負值磕洪。
    對于DECIMAL列吭练,所有基礎運算(+,-析显, *鲫咽,/)都以65為精度完成。

  • DEC[(M[,D])][UNSIGNED][ZEROFILL],NUMBER[(M[,D])][UNSIGNED][ZEROFILL],FIXED[(M[,D])][UNSIGNED][ZEROFILL]
    這些類型是DECIMAL的同義詞。FIXED可以與其他數(shù)據(jù)庫系統(tǒng)兼容分尸。

  • FLOAT[(M,D)][UNSIGNED][ZEROFILL]
    小的(單精度)浮點數(shù)锦聊。取值為-3.402823466E+38 到 -1.175494351E-38,0箩绍,1.175494351E-38到3.402823466E+38孔庭,這是IEEE標準規(guī)定的理論限制,實際取值可能會略小材蛛,具體取決于我們的硬件和操作系統(tǒng)圆到。
    M是所有數(shù)字總位數(shù),D是小數(shù)點后的位數(shù)卑吭。如果省略M和D芽淡,存儲的位數(shù)取決于硬件,單精度浮點數(shù)可以精確到大約7為小數(shù)陨簇。
    FLOAT(M, D)是非標準的MySQL擴展吐绵。
    如果指定了UNSIGNED,不允許負值河绽。
    使用FLOAT可能會得到我們意想不到的結果己单,因為MySQL中的計算是使用DOUBLE完成的,可以參看B.4.4.7 解決不匹配行的問題耙饰。

  • FLOAT(p)[UNSIGNED][ZEROFILL]
    浮點數(shù)纹笼。p表示以位位單位的精度,MySQL使用p值來確定結果數(shù)據(jù)類型是使用FLOAT還是DOUBLE苟跪。如果p為0到24廷痘,則數(shù)據(jù)類型為FLOAT,沒有M或D值件已;如果p為25到53笋额,則數(shù)據(jù)類型為DOUBLE,沒有M或D值篷扩。結果列的取值范圍與本節(jié)前面介紹的單精度FLOAT和雙精度DOUBLE取值范圍相同兄猩。
    FLOAT(p)語法是為了兼容ODBC。

  • DOUBLE[(M,D)][UNSIGNED][ZEROFILL]
    普通大屑础(雙精度)浮點數(shù)枢冤,取值為 -1.7976931348623157E+308到-2.2250738585072014E-308,0铜秆,2.2250738585072014E-308到1.7976931348623157E+308淹真。這是IEEE標準規(guī)定的理論限制,實際取值可能會略小连茧,具體取決于我們的硬件和操作系統(tǒng)核蘸。
    M是所有數(shù)字總位數(shù)巍糯,D是小數(shù)點后的位數(shù)。如果省略M和D值纱,存儲的位數(shù)取決于硬件鳞贷,雙精度浮點數(shù)可以精確到大約15為小數(shù)。
    DOUBLE(M, D)是非標準的MySQL擴展虐唠。
    如果指定了UNSIGNED搀愧,不允許負值。

  • DOUBLE PRECISION[(M,D)][UNSIGNED][ZEROFILL],REAL[(M,D)][UNSIGNED][ZEROFILL]
    這幾個類型是DOUBLE的同義詞疆偿,意外情況:如果MySQL mode中的REAL_AS_FLOAT設置為enable咱筛,那么,REAL是FLOAT的同義詞而不是DOUBLE杆故。

11.1.2 日期和時間類型概覽

(待續(xù))

11.1.3 字符串類型概覽

(待續(xù))

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末迅箩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子处铛,更是在濱河造成了極大的恐慌饲趋,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撤蟆,死亡現(xiàn)場離奇詭異奕塑,居然都是意外死亡,警方通過查閱死者的電腦和手機家肯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門龄砰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讨衣,你說我怎么就攤上這事换棚。” “怎么了反镇?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵固蚤,是天一觀的道長。 經常有香客問我歹茶,道長夕玩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任辆亏,我火速辦了婚禮,結果婚禮上鳖目,老公的妹妹穿的比我還像新娘扮叨。我一直安慰自己,他們只是感情好领迈,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布彻磁。 她就那樣靜靜地躺著碍沐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衷蜓。 梳的紋絲不亂的頭發(fā)上累提,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音磁浇,去河邊找鬼斋陪。 笑死,一個胖子當著我的面吹牛置吓,可吹牛的內容都是我干的无虚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衍锚,長吁一口氣:“原來是場噩夢啊……” “哼友题!你這毒婦竟也來了?” 一聲冷哼從身側響起戴质,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤度宦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后告匠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戈抄,經...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年凫海,在試婚紗的時候發(fā)現(xiàn)自己被綠了呛凶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡行贪,死狀恐怖漾稀,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情建瘫,我是刑警寧澤崭捍,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站啰脚,受9級特大地震影響殷蛇,放射性物質發(fā)生泄漏。R本人自食惡果不足惜橄浓,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一粒梦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荸实,春花似錦匀们、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽重抖。三九已至,卻和暖如春祖灰,著一層夾襖步出監(jiān)牢的瞬間钟沛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工局扶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恨统,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓详民,卻偏偏與公主長得像延欠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沈跨,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353