这更像是一个学术问题。在MySQL数据库中,我知道tinyint(M)及其与tinyint(1)的区别已经在这个站点上讨论过了,但我想知道的是其他一些东西。
是否可以用一列“已评审的TINYINT(5)”来将5个不同的布尔复选框的值存储在前面的形式中?我正在考虑将其作为一个数组来处理。如果是,如何引用它们?像REVIEWED(3)或REVIEWED3之类的东西是否适用于引用它们的元素?是否有一种语法来检查它们的所有元素是1还是0(或null)?
发布于 2022-02-04 15:20:02
TINYINT(1)和TINYINT(5)和TINYINT(12)或任何其他长度实际上是完全相同的。它们都是8位有符号整数.它们支持从-128到127的整数值。如果列定义为无符号整数,则值从0到255。
那“长度”这个论点是怎么回事?没什么。它不影响整数的大小、位数或值的范围。该参数仅为显示提示。除非您使用ZEROFILL选项,否则它是无用的。
mysql> create table mytable (i1 tinyint(1) zerofill, i2 tinyint(5) zerofill, i3 tinyint(12) zerofill);
Query OK, 0 rows affected (0.04 sec)
mysql> insert into mytable values (255,255,255);
Query OK, 1 row affected (0.02 sec)
mysql> select * from mytable;
+------+-------+--------------+
| i1 | i2 | i3 |
+------+-------+--------------+
| 255 | 00255 | 000000000255 |
+------+-------+--------------+ZEROFILL选项强制对该列进行无符号处理,当您查询该列时,它会将结果填充为零,直至您为该列定义的长度。零不存储在数据库中,它们仅在获取查询结果时添加。
整数的“长度”参数具有误导性,给MySQL用户造成了许多混乱。事后看来,让语法像TINYINT ZEROFILL(12)这样更好,但现在改变它已经太晚了。
https://stackoverflow.com/questions/70988614
复制相似问题