面試官:int(1) 和 int(10) 有什么區(qū)別羡榴?

困惑

最近遇到個問題匀归,有個表的要加個user_id字段坑资,user_id字段可能很大,于是我提mysql工單alter table xxx ADD user_id int(1)穆端。領(lǐng)導(dǎo)看到我的sql工單袱贮,于是說:這int(1)怕是不夠用吧,接下來是一通解釋徙赢。

其實(shí)這不是我第一次遇到這樣的問題了字柠,其中不乏有工作5年以上的老司機(jī)。包括我經(jīng)常在也看到同事也一直使用int(10)狡赐,感覺用了int(1)窑业,字段的上限就被限制,真實(shí)情況肯定不是這樣枕屉。

數(shù)據(jù)說話

我們知道在mysql中 int占4個字節(jié)常柄,那么對于無符號的int,最大值是2^32-1 = 4294967295搀擂,將近40億西潘,難道用了int(1),就不能達(dá)到這個最大值嗎哨颂?

CREATE TABLE `user` (
  `id` int(1) unsigned NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

id字段為無符號的int(1)喷市,我來插入一個最大值看看。

mysql> INSERT INTO `user` (`id`) VALUES (4294967295);
Query OK, 1 row affected (0.00 sec)

可以看到成功了威恼,說明int后面的數(shù)字品姓,不影響int本身支持的大小,int(1)箫措、int(2)...int(10)沒什么區(qū)別腹备。

零填充

一般int后面的數(shù)字,配合zerofill一起使用才有效斤蔓。先看個例子:

CREATE TABLE `user` (
  `id` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

注意int(4)后面加了個zerofill植酥,我們先來插入4條數(shù)據(jù)。

mysql> INSERT INTO `user` (`id`) VALUES (1),(10),(100),(1000);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

分別插入1、10友驮、100漂羊、1000 4條數(shù)據(jù),然后我們來查詢下:

mysql> select * from user;
+------+
| id   |
+------+
| 0001 |
| 0010 |
| 0100 |
| 1000 |
+------+
4 rows in set (0.00 sec)

通過數(shù)據(jù)可以發(fā)現(xiàn) int(4) + zerofill實(shí)現(xiàn)了不足4位補(bǔ)0的現(xiàn)象喊儡,單單int(4)是沒有用的拨与。而且對于0001這種,底層存儲的還是1艾猜,只是在展示的會補(bǔ)0。

總結(jié)

int后面的數(shù)字不能表示字段的長度捻悯,int(num)一般加上zerofill匆赃,才有效果。

zerofill的作用一般可以用在一些編號相關(guān)的數(shù)字中今缚,比如學(xué)生的編號 001 002 ... 999這種算柳,如果mysql沒有零填充的功能,但是你又要格式化輸出等長的數(shù)字編號時姓言,那么你只能自己處理了瞬项。


image.png

來源:juejin.cn/post/6992574502282477605

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市何荚,隨后出現(xiàn)的幾起案子囱淋,更是在濱河造成了極大的恐慌,老刑警劉巖餐塘,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妥衣,死亡現(xiàn)場離奇詭異,居然都是意外死亡戒傻,警方通過查閱死者的電腦和手機(jī)税手,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來需纳,“玉大人芦倒,你說我怎么就攤上這事〔霍妫” “怎么了兵扬?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長慌盯。 經(jīng)常有香客問我周霉,道長,這世上最難降的妖魔是什么亚皂? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任俱箱,我火速辦了婚禮,結(jié)果婚禮上灭必,老公的妹妹穿的比我還像新娘狞谱。我一直安慰自己乃摹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布跟衅。 她就那樣靜靜地躺著孵睬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伶跷。 梳的紋絲不亂的頭發(fā)上掰读,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音叭莫,去河邊找鬼蹈集。 笑死,一個胖子當(dāng)著我的面吹牛雇初,可吹牛的內(nèi)容都是我干的拢肆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼靖诗,長吁一口氣:“原來是場噩夢啊……” “哼郭怪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刊橘,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鄙才,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伤为,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咒循,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年绞愚,在試婚紗的時候發(fā)現(xiàn)自己被綠了叙甸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡位衩,死狀恐怖裆蒸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糖驴,我是刑警寧澤僚祷,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站贮缕,受9級特大地震影響辙谜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜感昼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一装哆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦蜕琴、人聲如沸萍桌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽上炎。三九已至,卻和暖如春雏搂,著一層夾襖步出監(jiān)牢的瞬間藕施,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工畔派, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铅碍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓线椰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尘盼。 傳聞我的和親對象是個殘疾皇子憨愉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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