混淆mysql表字段的大小

时间:2012-02-07 07:21:24

标签: mysql phpmyadmin

我刚刚创建了一个角色表,我定义了role_id tinyint(1),即使我能够存储99,200最多255个作为unsigned的tinyint限制。那么在数据类型中传递这个大小的含义是什么?

当读得很少时,它是关于显示宽度,但是当我在我的php页面上获取结果时,它会显示为存储在表格中。

任何导师,你能指导我清楚吗?

1 个答案:

答案 0 :(得分:2)

来自10.1.1. Numeric Type Overview

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 [...].

因此,在您的情况下,tinyint(M)tinyint(1)意味着存储在role_id中的任何值在被MySQL显示时将被斩波为一个字节的长度。类似地,tinyint(3)将使用两个空格填充一位数整数。您也可以使用tinyint(3) zerofill来填充0,但它会产生使tinyint无符号的副作用。

但是,无论您如何指定tinyint s,它们都将在内部存储为[-128,127](已签名)或[0,255](无符号)范围内的整数,因此这是值查询数据库时将收到PHP。

您可以使用mysql_field_lensubstr来限制显示宽度,与PHP类似。