我刚刚创建了一个角色表,我定义了role_id tinyint(1),即使我能够存储99,200最多255个作为unsigned的tinyint限制。那么在数据类型中传递这个大小的含义是什么?
当读得很少时,它是关于显示宽度,但是当我在我的php页面上获取结果时,它会显示为存储在表格中。
任何导师,你能指导我清楚吗?
答案 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_len和substr来限制显示宽度,与PHP类似。