首頁  >  文章  >  資料庫  >  MYSQL中的int(11)代表什麼

MYSQL中的int(11)代表什麼

小云云
小云云原創
2017-12-19 16:13:262373瀏覽

在工作中經常要與mysql打交道,但是對mysql的各個字段類型一直都是一知半解,MYSQL中的int(11)代表什麼呢?大家可能也不太清楚,因此寫本文總結記錄一番。

MYSQL中的int(11)代表什麼

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

The number in the parenthesis does not determines the max and min values that can be stored in the integer field. The max and min values that can be stored are always fixed.

The display wnotth of the column doth the aue that maxth the cod s nth of the cod that aue. can be stored in that column. A column with INT(5) or INT(11) can store the same maximum values. Also, if you have a column INT(20) that does not means that you have a column INT(20) that does not means that you have be able store values (BIGINT values). The column still will store only till the max values of INT.

那麼照文中所說,所以無論怎麼設定int類型的顯示寬度,int所能儲存的最大值和最小值是固定的,那麼這個顯示寬度到底有什麼用呢?
當int欄位類型設定為無符號填入零(UNSIGNED ZEROFILL)時,當數值位數未達到設定的顯示寬度時,會在數值前面補充零直到滿足設定的顯示寬度,為什麼會有無符號的限制呢,是因為ZEROFILL屬性會隱式地將數值轉為無符號型,因此不能儲存負的數值。

具體用以下程式碼解釋。

先建立一張表:

CREATE TABLE int_demo (
    id INT(11) NOT NULL AUTO_INCREMENT,
    a INT(11) NOT NULL,
    b INT(11) UNSIGNED ZEROFILL NOT NULL,
    c INT(5) DEFAULT NULL,
    d INT(5) UNSIGNED ZEROFILL NOT NULL,
    e INT(15) DEFAULT NULL,
    PRIMARY KEY (`id`)
)

插入兩個資料

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;
00000000001##2##1234567890 012345678901234567890
a b c d e
#1 1 1 #1
1 00001 1

1234567890

1234567890

  1. 1234567890
  2. 1234567890


#。的0,但把數據導出時可看到真實的數據,猜測是軟體對數據格式進行了處理?

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

如果一個欄位設定了無符號和填入零屬性,那麼無論這個欄位儲存什麼數值,數值的長度都會與設定的顯示寬度一致,如上述例子中的字段b,插入數值1顯示為00000000001,左邊補了10個零直至長度達到11位;

#設定欄位的顯示寬度並不限製欄位儲存值的範圍,例如欄位d設定為int(5),但仍可儲存1234567890這個10位元數字;

##設定的字符寬度只對數值長度不滿足寬度時有效,如d字段int(5),插入1時,長度不足5,因此在左邊補充4個零直到5位,但是插入1234567890時超過了5位,這時的顯示寬度就起不了作用了。


###相關推薦:############MYSQL如何自動為查詢資料的結果編上序號方法教學########## ##MySQL資料檔案儲存位置的檢視方法############mysql分頁效能探索###############

以上是MYSQL中的int(11)代表什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn