codeigniter 在INT上增加长度有什么用?[副本]

zwghvu4y  于 8个月前  发布在  其他
关注(0)|答案(2)|浏览(51)

此问题已在此处有答案

Do length and decimals settings matter for datetime or int columns?(2个答案)
关闭27天前。
我在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)。我认为一个整数对于id来说应该足够大。增加长度的意义是什么?
我通常使用INT。我想知道什么是最好的做法。

wd2eg0qa

wd2eg0qa1#

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 |
+-------+
xghobddn

xghobddn2#

定义的长度不像字段的限制或最大长度,您可以使用长度5,并且仍然能够插入长度为20的ID。

(* 答案已经说完了,剩下的只是多余的解释 *)

你可以忽略它,它实际上是用于(视觉表示),比如当你使用一些数据库工具时,它会为5个字符留下一个空格,但这并不意味着它不能是一个超过5的值。例如,如果我们添加一列name,您可以将长度设置为10。这意味着,即使在某些数据库工具中显示表数据,或者为了数据的可视化表示,它也将仅显示前10个字符,作为良好外观和良好数据阅读的行为,但它可以是具有超过10个字符的名称,但它将被省略。
另一方面,如果你关心字段的范围,你应该使用适当的整数类型(INTBIGINT ...)。

相关问题