int(1) 和 int(10) 有什么區(qū)別?資深開發(fā)竟然都理解錯(cuò)了!
上一篇:微博被曝大面積裁員?上熱搜了
數(shù)據(jù)說(shuō)話
CREATE TABLE `user` (`id` int(1) unsigned NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
id字段為無(wú)符號(hào)的int(1),我來(lái)插入一個(gè)最大值看看。
mysql> INSERT INTO `user` (`id`) VALUES (4294967295);Query OK, 1 row affected (0.00 sec)
一般int后面的數(shù)字,配合zerofill一起使用才有效。先看個(gè)例子:
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)后面加了個(gè)zerofill,我們先來(lái)插入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ù),然后我們來(lái)查詢下:
mysql> select * from user;+------+| id |+------+| 0001 || 0010 || 0100 || 1000 |+------+4 rows in set (0.00 sec)
通過(guò)數(shù)據(jù)可以發(fā)現(xiàn) int(4) + zerofill實(shí)現(xiàn)了不足4位補(bǔ)0的現(xiàn)象,單單int(4)是沒(méi)有用的。另外搜索公眾號(hào)互聯(lián)網(wǎng)架構(gòu)師后臺(tái)回復(fù)“2T”,獲取一份驚喜禮包。
而且對(duì)于0001這種,底層存儲(chǔ)的還是1,只是在展示的會(huì)補(bǔ)0。
總結(jié)
int后面的數(shù)字不能表示字段的長(zhǎng)度,int(num)一般加上zerofill,才有效果。

相關(guān)閱讀:2T架構(gòu)師學(xué)習(xí)資料干貨分享
全棧架構(gòu)社區(qū)交流群
?「全棧架構(gòu)社區(qū)」建立了讀者架構(gòu)師交流群,大家可以添加小編微信進(jìn)行加群。歡迎有想法、樂(lè)于分享的朋友們一起交流學(xué)習(xí)。
看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人
往期資源:
評(píng)論
圖片
表情
