Int(M) M中的意义

转:
作为对 ANSI/ISO SQL92 标准的一个扩展,MySQL 也支持整型类型 TINYINT、MEDIUMINT 和 BIGINT。
另外一个扩展是 MySQL 支持随意指定一个整型数值的显示格式,这通过在类型的基本关键词后跟一个括号来实现(例如 INT(4))。
这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,
而不是为了限制在该列中存储值的宽度,也不是为了限制那些超过该列指定宽度的值的可被显示的数字位数。
当与可选的扩展属性 ZEROFILL 一起使用时,缺省填补用的空格被零代替。
举例来说,一个列被定义为 INT(5) ZEROFILL,插入的值 4 被检索出来时为 00004。

注意,如果在一个整型列中存储一个超过显示宽度的更大值时,当 MySQL 为某些复杂的联结(join)生成临时表时,
你可能会遇到问题,因为在这种情况下,MySQL 信任地认为所有的值均适合原始的列宽度。 (暂时没测出来)

手册:
M indicates the maximum display width for integer types. The maximum legal display width is 255. 
Display width is unrelated to the range of values a type can contain

测试1如下:
mysql> alter table b modify b int(2) ZEROFILL ;
Query OK, 2 rows affected (0.06 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql>
mysql>
mysql> select * from b;
+------+---------+------+
| a    | b       | c    |
+------+---------+------+
| NULL |      01 | NULL |
| NULL | 1111111 | NULL |
+------+---------+------+
2 rows in set (0.00 sec)



测试2如下:
mysql> select * from s left join b on s.f = b.b;
+---------+------+------+---------+------+
| f       | a    | a    | b       | c    |
+---------+------+------+---------+------+
|       2 |    4 | NULL |    NULL | NULL |
|       3 |    4 | NULL |    NULL | NULL |
|       4 |    5 | NULL |    NULL | NULL |
|       5 |    2 | NULL |    NULL | NULL |
|    1111 |    1 | NULL |    NULL | NULL |
| 1111111 | NULL | NULL | 1111111 | NULL |
+---------+------+------+---------+------+
6 rows in set (0.00 sec)

mysql> select * from b;
+------+---------+------+
| a    | b       | c    |
+------+---------+------+
| NULL |      01 | NULL |
| NULL | 1111111 | NULL |
+------+---------+------+
2 rows in set (0.00 sec)

mysql> select * from s;
+---------+------+
| f       | a    |
+---------+------+
|       2 |    4 |
|       3 |    4 |
|       4 |    5 |
|       5 |    2 |
|    1111 |    1 |
| 1111111 | NULL |
+---------+------+
6 rows in set (0.00 sec)

你可能感兴趣的:(C++,c,mysql,C#,F#)