向 INT 添加长度有什么用?[复制]

What is the use of adding length to INT? [duplicate]

提问人:Elavarasan 提问时间:8/25/2023 更新时间:8/25/2023 访问量:66

问:

我在 CodeIgniter 文档中看到了这段代码。

<?php

$fields = [
    'id' => [
        'type'           => 'INT',
        'constraint'     => 5,
        'unsigned'       => true,
        'auto_increment' => true,
    ],
    'title' => [
        'type'       => 'VARCHAR',
        'constraint' => '100',
        'unique'     => true,
    ],
    'author' => [
        'type'       => 'VARCHAR',
        'constraint' => 100,
        'default'    => 'King of Town',
    ],
    'description' => [
        'type' => 'TEXT',
        'null' => true,
    ],
    'status' => [
        'type'       => 'ENUM',
        'constraint' => ['publish', 'pending', 'draft'],
        'default'    => 'pending',
    ],
];

id 字段将转换为 .我认为整数应该足够大。增加长度的意义何在?INT(5)

我一般使用.我想知道什么是最佳实践。INT

php mysql codeigniter

评论

2赞 Sammitch 8/25/2023
没有。MySQL允许整数类型的长度说明符,但它没有意义。如果需要较小的整数,请使用较小的整数类型之一。
0赞 Rinsad Ahmed 8/25/2023
在MySQL中,当您指定INT(5)时,它实际上并没有限制可以存储在列中的值范围。它只影响显示列时的显示宽度。

答:

0赞 HichemTech 8/25/2023 #1

定义的长度不像字段的限制或最大长度,您可以使用长度,并且仍然可以插入带有长度的 ID。520

(答案已经完成,剩下的只是一个额外的解释)

你可以忽略它,它实际上用于(视觉表示),比如当你使用一些数据库工具时,它留下了一个 5 个字符的空间,但这并不意味着它不能是一个超过 5 个字符的值。例如,如果我们添加一列,则可以将 FOE 示例的长度设置为 10。这意味着,如果表数据甚至显示在某个数据库工具中,或者用于数据的可视化表示,它将仅显示前 10 个字符,以表示美观和良好的数据读取,但它可以是一个超过 10 个的名称,但它只会被省略号。name

另一方面,如果您担心字段的范围,则应使用适当的整数类型 (, ...)。INTBIGINT

3赞 Georg Richter 8/25/2023 #2

INT(5)是一个 4 字节整数,显示宽度为 5。仅当使用附加选项定义整数列时,才使用显示宽度。ZEROFILL

CREATE TABLE t1(a INT(5) ZEROFILL);
INSERT INTO t1 VALUES (1),(23),(589);
SELECT a FROM t1;
+-------+
| a     |
+-------+
| 00001 |
| 00023 |
| 00589 |
+-------+