欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單談?wù)凪ySQL中的int(m)

 更新時間:2016年09月29日 08:39:44   作者:chenyanxx  
設(shè)置int型的時候,需要設(shè)置int(M),以前知道這個M最大是255,但是到底應(yīng)該設(shè)置多少并沒有在意。注意zerofill,今天我們來簡單探討下

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

以前我一直以為這里是在限制int顯示的寬度,后來仔細研究和通過上網(wǎng)查詢發(fā)現(xiàn),事實并不是那樣的。

確切的來說,這里的“寬度”只是一個“預(yù)期值”,它所代表的僅僅是你在設(shè)計數(shù)據(jù)表結(jié)構(gòu)時,想讓該列日后顯示的值寬度為多少,但是具體存入值的寬度多少不會受任何影響。

當(dāng)然,它的作用不僅如此,在存入數(shù)據(jù)的時候,還是有一定區(qū)別的,這一點可以通過設(shè)置字段的zerofill可以看出。比如這里我們創(chuàng)建一個數(shù)據(jù)表,結(jié)構(gòu)如下:

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

上面代碼創(chuàng)建一個名為test的表,結(jié)構(gòu)很簡單,表中只有一個名為num的字段,類型為int,寬度為5,為了看出寬度方便,我們又添加一個zerofill屬性(該屬性會讓存入數(shù)值在不足寬度情況下,左側(cè)補0)

然后我們開始插入數(shù)據(jù):

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

打印結(jié)果:

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

由以上結(jié)果,不難看出,如果字符少于設(shè)置(期望值)寬度,在設(shè)置了zerofill屬性的情況下,左側(cè)會統(tǒng)統(tǒng)補0;但是如果超出則不受任何影響。也就是說這里的int(m)中m只是一個預(yù)期值,和真實數(shù)據(jù)寬度并沒多大關(guān)系。

相關(guān)文章

最新評論