MYSQL中的int(11)到底代表什么意思?


對於int類型的一些基礎知識其實上圖已經說的很明白了,在這里想討論下常用的int(11)代表什么意思,很長時間以來我都以為這代表着限制int的長度為11位,直到有天看到篇文章才明白,11代表的並不是長度,而是字符的顯示寬度,在字段類型為int時,無論你顯示寬度設置為多少,int類型能存儲的最大值和最小值永遠都是固定

當int字段類型設置為無符號填充零(UNSIGNED ZEROFILL)時,當數值位數未達到設置的顯示寬度時,會在數值前面補充零直到滿足設定的顯示寬度,為什么會有無符號的限制呢,是因為ZEROFILL屬性會隱式地將數值轉為無符號型,因此不能存儲負的數值。

插入兩條數據

INSERT INTO int_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1); INSERT INTO int_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);
select * from int_demo;
id a b c d e
1 1 00000000001 1 00001 1
2 1234567890 01234567890 1234567890 1234567890 1234567890

注釋:如果用navicate軟件查詢出來並不會顯示左邊的0,但把數據導出時可看到真實的數據,猜測是軟件對數據格式進行了處理?

三、結論

從上個例子我們可以得出以下幾個結論:

  1. 如果一個字段設置了無符號和填充零屬性,那么無論這個字段存儲什么數值,數值的長度都會與設置的顯示寬度一致,如上述例子中的字段b,插入數值1顯示為00000000001,左邊補了10個零直至長度達到11位;
  2. 設置字段的顯示寬度並不限制字段存儲值的范圍,比如字段d設置為int(5),但是仍然可以存儲1234567890這個10位數字;
  3. 設置的字符寬度只對數值長度不滿足寬度時有效,如d字段int(5),插入1時,長度不足5,因此在左邊補充4個零直到5位,但是插入1234567890時超過了5位,這時的顯示寬度就起不了作用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM