簡單談談MySQL中的int(m)_Mysql

來源:互聯網
上載者:User

我們在設計表的時候,如果碰到需要設定int(整型)的時候,通常會按照慣例(大家都這樣寫)設定成int(11)。那麼這裡為什麼是11呢?代表的又是什麼呢?

以前我一直以為這裡是在限制int顯示的寬度,後來仔細研究和通過上網查詢發現,事實並不是那樣的。

確切的來說,這裡的“寬度”只是一個“預期值”,它所代表的僅僅是你在設計資料表結構時,想讓該列日後顯示的值寬度為多少,但是具體存入值的寬度多少不會受任何影響。

當然,它的作用不僅如此,在存入資料的時候,還是有一定區別的,這一點可以通過設定欄位的zerofill可以看出。比如這裡我們建立一個資料表,結構如下:

create table test ( num int(5) zerofill);

上面代碼建立一個名為test的表,結構很簡單,表中只有一個名為num的欄位,類型為int,寬度為5,為了看出寬度方便,我們又添加一個zerofill屬性(該屬性會讓存入數值在不足寬度情況下,左側補0)

然後我們開始插入資料:

mysql> insert into test values(1),(11),(123),(12345),(123456),(1234567);Query OK, 6 rows affected (0.00 sec)Records: 6 Duplicates: 0 Warnings: 0

列印結果:

mysql> select * from test;+---------+| num   |+---------+|  00001 ||  00011 ||  00123 ||  12345 || 123456 || 1234567 |+---------+6 rows in set (0.00 sec)

由以上結果,不難看出,如果字元少於設定(期望值)寬度,在設定了zerofill屬性的情況下,左側會統統補0;但是如果超出則不受任何影響。也就是說這裡的int(m)中m只是一個預期值,和真實資料寬度並沒多大關係。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.