自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

互聯(lián)網(wǎng)大廠面試:MySQL中int(11)和int(10)有什么區(qū)別?

數(shù)據(jù)庫(kù) MySQL
對(duì)于字符串類型的定義name varchar(20),我們可以清楚的知道,這是表示name這個(gè)字段最大長(zhǎng)度是20個(gè)字符,當(dāng)name字段的長(zhǎng)度超過20字符時(shí),MySQL就會(huì)報(bào)錯(cuò)。

我們?cè)谄綍r(shí)創(chuàng)建MySQL表時(shí),會(huì)指定各種字段的類型,比如id int(11),name varchar(20)。

那不知道大家細(xì)想過沒有,int(11)和int(10)有什么區(qū)別呢?存儲(chǔ)的數(shù)值范圍有什么不一樣嗎??

對(duì)于字符串類型的定義name varchar(20),我們可以清楚的知道,這是表示name這個(gè)字段最大長(zhǎng)度是20個(gè)字符,當(dāng)name字段的長(zhǎng)度超過20字符時(shí),MySQL就會(huì)報(bào)錯(cuò)。

那么對(duì)于int類型來說,當(dāng)定義為無符號(hào)int時(shí),最大取值范圍是4294967295,數(shù)一下長(zhǎng)度也就10位,那么難道我們定義int(11)的時(shí)候,可以突破int類型的取值上限了嗎?

另外有些細(xì)心的朋友可能會(huì)發(fā)現(xiàn),我們?cè)趧?chuàng)建表時(shí),如果沒有指定int類型的length,MySQL會(huì)自動(dòng)幫我們指定length為int(10)。如果我們指定了int(x),那么length就會(huì)被定義為x。

其實(shí),對(duì)于int類型來說,其最大值和最小值都是固定的,定義的int(x)中x代表的并不是長(zhǎng)度,而是顯示寬度。

當(dāng)定義一個(gè)無符號(hào)int類型,且設(shè)置了ZEROFILL屬性時(shí),如果數(shù)值的長(zhǎng)度沒有達(dá)到顯示的寬度時(shí),MySQL會(huì)自動(dòng)的在數(shù)值前面補(bǔ)零直至達(dá)到定義的寬度。

我們新建一個(gè)表test驗(yàn)證一下。

大家可以看到我將id的length定義為了8,這是為了讓大家看到當(dāng)存儲(chǔ)的數(shù)值超過8的顯示結(jié)果。desc查看表結(jié)構(gòu)如下:

我們插入兩條數(shù)據(jù),看一下具體的顯示效果。


兩條記錄的主鍵分別為1和10001000,select看一下MySQL是如何顯示的。

可以看到,第一條記錄,由于顯示的寬度只有1,MySQL對(duì)其在左邊補(bǔ)了7個(gè)0,

而對(duì)于第二條記錄,其顯示寬度是8,MySQL沒有做什么改變。

也就說,當(dāng)存儲(chǔ)的數(shù)據(jù)寬度不夠時(shí),MySQL才會(huì)在左邊補(bǔ)零。

那么問題又來了,MySQL引擎在存儲(chǔ)數(shù)據(jù)的時(shí)候,存的是1呢,還是00000001呢?

很明顯,存儲(chǔ)的是1,00000001只是用來給我們顯示用的。

另外需要大家注意的是,zerofill填充只對(duì)正數(shù)起作用,因?yàn)?span style="color: #121212;">ZEROFILL屬性會(huì)隱式地將數(shù)值轉(zhuǎn)為無符號(hào)型。

所以總結(jié)一下就是,int(x)中的x代表是其寬度,其寬度值并不會(huì)影響存儲(chǔ)的范圍,而只是根據(jù)定義的寬度進(jìn)行了顯示的格式化而已。

而int類型寬度可以定義的范圍是多少呢?-1~10485760。

最后,再問大家一個(gè)問題吧,寬度的格式化是MySQL的Server來做的,還是InnoDB引擎做的呢?

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-04-26 05:36:59

物聯(lián)網(wǎng)

2022-08-31 16:17:21

造芯互聯(lián)網(wǎng)公司大廠

2021-12-16 10:32:04

APP會(huì)員互聯(lián)網(wǎng)大廠用戶

2023-03-07 08:22:34

MySQL優(yōu)化器

2022-01-05 16:45:22

互聯(lián)網(wǎng)裁員危機(jī)

2020-12-30 05:36:59

分庫(kù)分表存儲(chǔ)

2023-01-17 09:41:26

Redis接口限流

2019-10-25 15:50:06

MySQL數(shù)據(jù)庫(kù)命令

2025-02-10 08:40:00

MySQLint(10)數(shù)據(jù)庫(kù)

2021-12-14 15:27:48

互聯(lián)網(wǎng)程序員裁員

2020-02-23 17:39:21

互聯(lián)網(wǎng)復(fù)工公司

2022-06-01 20:24:25

互聯(lián)網(wǎng)元宇宙大廠

2022-02-24 11:05:06

互聯(lián)網(wǎng)加班科技

2023-05-02 22:38:46

JVMJVM調(diào)優(yōu)

2021-11-22 10:03:47

互聯(lián)網(wǎng)薪資技術(shù)

2018-08-23 09:06:18

互聯(lián)網(wǎng)百度面試

2020-07-19 10:06:02

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2022-08-22 07:06:32

MyBatisSQL占位符

2022-01-24 10:46:40

互聯(lián)網(wǎng)裁員

2021-06-28 08:57:29

快手騰訊員工
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)