MySQL 系列 —— 數(shù)據(jù)類型

數(shù)值類型

整數(shù)類型 字節(jié) 最小值 最大值
TINYINT 1 有符號 -2^7<br />無符號 0 有符號 2^7-1<br />無符號 2^8-1
SMALLINT 2 有符號 -2^{15}<br />無符號 0 有符號 2^{15}-1<br />無符號 2^{16}-1
MEDIUMINT 3 有符號 -2^{23}<br />無符號 0 有符號 2^{23}-1<br />無符號 2^{24}-1
INT、INTEGER 4 有符號 -2^{31}<br />無符號 0 有符號 2^{31}-1<br />無符號 2^{32}-1
BIGINT 8 有符號 -2^{63}<br />無符號 0 有符號 2^{63}-1<br />無符號 2^{64}-1
浮點數(shù)類型 字節(jié) 最小值 最大值
FLOAT 4 \pm1.175494351E-38 \pm3.402823466E+38
DOUBLE 8 \pm2.2250738585072014E-308 \pm1.7976931348623157E+308
定點數(shù)類型 字節(jié) 描述
DEC(M,D),<br />DECIMAL(M,D) M+2 最大取值范圍與 DOUBLE 相同瘫怜,給定 DECIMAL 的有效取值范圍由M和D決定

整數(shù)類型

在整數(shù)類型中滨彻,按照取值范圍和存儲方式不同藕届,分為 tinyint 、smallint亭饵、mediumint休偶、int 和 bigint 這 5 個類型。如果超出類型范圍的操作辜羊,會發(fā)生 “Out of range” 錯誤提示

對于整型數(shù)據(jù)踏兜,MySQL 還支持在類型名稱后面的小括號內(nèi)指定顯示寬度,例如int(5)表示當數(shù)值寬度小于 5 位的時候在數(shù)字前面填滿寬度八秃,如果不顯式指定寬度則默認為 int(11)碱妆。如果配合 zerofil 使用時,數(shù)字位數(shù)不夠的空間用字符 0 填滿昔驱。

設(shè)置寬度后疹尾,如果插入大于寬度限制的值,不會對插入的數(shù)據(jù)有任何影響骤肛,還是按照類型的實際精度進行保存纳本,這時,寬度格式實際已經(jīng)沒有意義腋颠。

很多的整數(shù)類型都有一個可選屬性 UNSIGNED(無符號)繁成,如果需要在字段里面保存非負數(shù)或者需要較大的上限值時,可以用此選項淑玫,它的取值范圍是正常值的下限取 0朴艰,上限取原值的 2 倍。如果一個列指定為 zerofill混移,則 MySQL 自動為該列添加 UNSIGNED 屬性。

另外侮穿,整數(shù)類型還有一個屬性:AUTO_INCREMENT歌径。在需要產(chǎn)生唯一標識符或順序值時,可利用此屬性亲茅,這個屬性只用于整數(shù)類型回铛。值一般從 1 開始,每行增加 1克锣。一個表中最多只能有一個 AUTO_INCREMENT 列茵肃。對于任何想要使用 AUTO_INCREMENT 的列,應(yīng)該定義為 NOT NULL袭祟,并定義為 PRIMARY KEY 或者定義為 UNIQUE 鍵验残。

小數(shù)類型

小數(shù)類型分為兩種:浮點數(shù)定點數(shù)

浮點數(shù)包括 float(單精度)和 double(雙精度)巾乳,而定點數(shù)則只有 decimal 一種表示您没。

定點數(shù)在 MySQL 內(nèi)部以字符串形式存放鸟召,比浮點數(shù)更精確,適合用來表示貨幣等精度高的數(shù)據(jù)氨鹏。

浮點數(shù)和定點數(shù)都可以用類型名稱后加(M,D)的方式來進行表示欧募,表示該值一共 M 位數(shù)字(整數(shù)位+小數(shù)位),其實 D 表示小數(shù)位的長度仆抵,M 和 D 又稱為精度和標度跟继。在不指定精度時,默認會按照實際的精度(由實際的硬件和操作系統(tǒng)決定)來顯示镣丑,而 decimal 在不指定精度時舔糖,默認的整數(shù)位為 10,默認的小數(shù)位為 0传轰。需要注意的是剩盒,浮點數(shù)后面跟(M,D)的用法是非標準用法,如果要用于數(shù)據(jù)庫的遷移慨蛙,則最好不要這么使用辽聊。

MySQL 在保存值時,如果小數(shù)位長度超過 D 值期贫,當該列為浮點類型時跟匆,會進行四舍五入,如果是定點數(shù)時通砍,會將超出的丟掉玛臂。

日期時間類型

日期和時間類型 字節(jié) 最小值 最大值
DATE 4 1000-01-01 9999-12-31
DATETIME 8 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 19700101080001 2038年的某個時刻
TIME 3 -839:59:59 839:59:59
YEAR 1 1901 2155

TIMESTAMP 和 DATETIME 的區(qū)別:

  • TIMESTAMP 支持的時間范圍較小,其取值范圍從 19700101080001 到 2038 年的某個時間封孙,因此不適合存放比較久遠的日期迹冤,而 DATETIME 是從 1000-01-01 00:00:00 到 9999-12-31 23:59:59,范圍更大虎忌。
  • 表中的第一個 TIMESTAMP 列自動設(shè)置為系統(tǒng)時間泡徙。當插入的值超出取值范圍時,MySQL 認為該值溢出膜蠢,使用 0000-00-00 00:00:00 進行填補堪藐。
  • TIMESTAMP 的插入和查詢都受到當?shù)貢r區(qū)的影響,更能反映出實際的日期挑围。DATETIME 只能反映出插入時當?shù)氐臅r區(qū)礁竞,其它時區(qū)的人查看數(shù)據(jù)必然會有誤差的。

字符串類型

字符串類型 字節(jié) 描述及存儲需求
CHAR(M) M M 為0~255之間的整數(shù)
VARCHAR(M) M 為0~65535之間的整數(shù)杉辙,值的長度+1個字節(jié)
TINYBLOB 允許長度0~255字節(jié)模捂,值的長度+1個字節(jié)
BLOB 允許長度0~65535字節(jié),值的長度+2個字節(jié)
MEDIUMBLOB 允許長度0~167772150字節(jié),值的長度+3個字節(jié)
LONGBLOB 允許長度0~4294967295字節(jié)枫绅,值的長度+4個字節(jié)
TINYTEXT 允許長度0~255字節(jié)泉孩,值的長度+2個字節(jié)
TEXT 允許長度0~65525字節(jié),值的長度+2個字節(jié)
MEDIUMTEXT 允許長度0~167772159字節(jié)并淋,值的長度+3個字節(jié)
LONGTEXT 允許長度0~4294967295字節(jié)寓搬,值的長度+4個字節(jié)
VARBINARY(M) 允許長度0~M個字節(jié)的變長字節(jié)字符串,值的長度+1個字節(jié)
BINARY(M) M 允許長度0~M個字節(jié)的定長字節(jié)字符串

CHAR 和 VARCHAR 類型

  • CHAR 列的長度固定為創(chuàng)建表時聲明的長度县耽,長度可以為從 0~255 的任何值句喷,存儲時,如果字符數(shù)沒有達到定義的位數(shù)兔毙,會在后面用空格補全入數(shù)據(jù)庫中唾琼;VARCHAR 列中的值可變長字符串,如果沒有達到定義的位數(shù)澎剥,也不會在后面補空格锡溯。
  • 在獲取數(shù)據(jù)時,CHAR 列會把后面的空格全部丟棄掉哑姚;取 VARCHAR 數(shù)據(jù)時尾部空格會保留祭饭。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叙量,隨后出現(xiàn)的幾起案子倡蝙,更是在濱河造成了極大的恐慌,老刑警劉巖绞佩,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寺鸥,死亡現(xiàn)場離奇詭異,居然都是意外死亡品山,警方通過查閱死者的電腦和手機胆建,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肘交,“玉大人眼坏,你說我怎么就攤上這事∷嵝” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵檐蚜,是天一觀的道長魄懂。 經(jīng)常有香客問我,道長闯第,這世上最難降的妖魔是什么市栗? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上填帽,老公的妹妹穿的比我還像新娘蛛淋。我一直安慰自己,他們只是感情好篡腌,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布褐荷。 她就那樣靜靜地躺著,像睡著了一般嘹悼。 火紅的嫁衣襯著肌膚如雪叛甫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天杨伙,我揣著相機與錄音其监,去河邊找鬼。 笑死限匣,一個胖子當著我的面吹牛抖苦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播米死,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼锌历,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哲身?” 一聲冷哼從身側(cè)響起辩涝,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勘天,沒想到半個月后怔揩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡脯丝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年商膊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宠进。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡晕拆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出材蹬,到底是詐尸還是另有隱情实幕,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布堤器,位于F島的核電站昆庇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闸溃。R本人自食惡果不足惜整吆,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一拱撵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧表蝙,春花似錦拴测、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至欲诺,卻和暖如春抄谐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扰法。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工蛹含, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塞颁。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓浦箱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親祠锣。 傳聞我的和親對象是個殘疾皇子酷窥,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1、MySQL 數(shù)據(jù)類型 MySQL中定義數(shù)據(jù)字段的類型對你數(shù)據(jù)庫的優(yōu)化是非常重要的伴网。 MySQL支持多種類型蓬推,大...
    garvin閱讀 537評論 0 1
  • 本文基于MySQL5.6版本進行描述從大的方面來講,MySQL的數(shù)據(jù)類型分為4種 數(shù)值類型 日期和時間 字符串類型...
    黑哥兒666閱讀 743評論 0 0
  • 什么是數(shù)據(jù)庫澡腾? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序沸伏。每個數(shù)據(jù)庫具有一個或多個不同的API,用于創(chuàng)建动分,訪問毅糟,管理...
    chen_000閱讀 4,030評論 0 19
  • 良好的邏輯設(shè)計和物理設(shè)計是高性能的基石, 應(yīng)該根據(jù)系統(tǒng)將要執(zhí)行的查詢語句來設(shè)計schema, 這往往需要權(quán)衡各種因...
    好好學(xué)習(xí)Sun閱讀 430評論 0 2
  • 一澜公、數(shù)據(jù)庫簡介 1.數(shù)據(jù)庫系統(tǒng) 1.1數(shù)據(jù)庫 DataBase【DB】姆另,指的是長期保存到計算機上的數(shù)據(jù),按照一定順...
    鄭元吉閱讀 592評論 0 6