gpt4 book ai didi

mysql - MySQL中的tinyint(M)有什么用处?

转载 作者:行者123 更新时间:2023-12-03 08:10:31 25 4
gpt4 key购买 nike

这更多的是一个学术问题。在 MySQL 数据库中,我知道本网站已讨论过 tinyint(M) 及其与 tinyint(1) 的差异,但我想知道其他内容。

是否可以使用“REVIEWED TINYINT(5)”列来存储前端表单中 5 个不同 bool 复选框的值?我正在考虑将其视为数组。如果是这样,将如何引用它们?像 REVIEWED(3) 或 REVIEWED[3] 这样的东西可以用来引用它们的元素吗?是否有一个语法来检查它们的所有元素是否为 1 或 0(或 null)?

最佳答案

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) 这样的语法,但现在更改它已经太晚了。

关于mysql - MySQL中的tinyint(M)有什么用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70988614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com