您的位置:首页 > 其它

Data type confusion: what is an int(11)?

2011-07-19 08:43 585 查看
Over and over I see customers that don't understand what 
int(11)
 really means. Their confusion is understandable. Many know what defining a 
char(10)
 means (a fixed-sized character string that allows up to 10 characters). However, ints are different.

First of all, there are 5 types of integer. They are all fixed size.
Type# of bytes
tinyint1
smallint2
mediumint3
int4
bigint8
As you can see from the chart, an 
int
 is always 4 bytes. That can store signed numbers from -2 billion to +2 billion (and unsigned numbers 0 to 4B). So, what does it mean if you declare an 
int(5)
? It does not restrict the number of digits to 5... It may actually do nothing! The (5) part is a display width. It's only used if you use UNSIGNED and ZEROFILL with an integer type. Then the display of those numbers will be zero-padded on the left to 5 digits if they contain less than 5 digits. Example:

CREATE TABLE `foo` (
`bar` int(5) unsigned zerofill DEFAULT NULL
)


SELECT * FROM foo;
+---------+
| bar     |
+---------+
|   00042 | 
|   00101 | 
| 9876543 | 
+---------+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐