簡略談談MySQL中的int(m)。本站提示廣大學習愛好者:(簡略談談MySQL中的int(m))文章只能為提供參考,不一定能成為您想要的結果。以下是簡略談談MySQL中的int(m)正文
我們在設計表的時刻,假如碰著須要設置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只是一個預期值,和真實數據寬度並沒多年夜關系。