mysql テーブルのフィールドを設計する場合、int(5) はフィールドの長さが 5 であることを意味しますか?
そう思った方は、ぜひ読み進めていただければ、新たな発見があると思います。
主キー ID と長さフィールドが 1 つだけある新しいテーブルを作成します。長さフィールドは int(5) に設定されます。
#新建test表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `length` int(5) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
長さフィールドには長さ 5 までの数値しか格納できないというのは本当ですか? データの一部を挿入してみましょう。
さらに大きなデータ 123456789 を挿入します。このデータは合計 9 桁あり、正常に挿入できるかどうかを確認します。
#插入一条大数据 insert into test (length) values (123456789);
int(5) は 5 を超える長さのデータを挿入できることが判明したため、int(5) がデータの幅を表していないことがわかりました。
#查看插入数据 mysql> select * from test; +------------+-----------+ | id | length | +------------+-----------+ | 1 | 123456789 | +------------+-----------+
mysql では、int フィールドの長さは実際には 4 バイトに固定されています。int(11) を使用するか int(5) を使用するかに関係なく、フィールドの長さは 4 バイトに固定されます。 。
int(5) は、実際には別の属性 zerofill と組み合わせて使用されます。つまり、フィールド値の幅が 5 未満の場合、先頭に 0 が自動的に追加されます。 5 以上の場合、0 を追加する必要はありません。
#int(5) length 字段添加了 zerofill 属性 mysql> select * from test; +----+--------+ | id | length | +----+--------+ | 1 | 00888 | | 2 | 00012 | | 3 | 12345 | | 4 | 123456 | +----+--------+
前提としてフィールドに zerofill 属性を追加することが必要であることに注意してください。そうでない場合、int(5) は機能しません。
#int(5) length 字段没有 zerofill 属性 mysql> select * from test; +----+--------+ | id | length | +----+--------+ | 1 | 888 | | 2 | 12 | | 3 | 12345 | | 4 | 123456 | +----+--------+
整数フィールドの長さを設定したい場合は、tinyint、smallint、mediumint、int、bigint 型を選択する必要があります。これらの整数型は固定長を表します。具体的な長さについては、以下を参照してください。シート。
符号付き整数を保存する場合、zerofill 属性はサポートされていないため、自動的に 0 に変換されることに注意してください。デクリメントを伴う一部のビジネスでは、これを考慮する必要があります。 。
以上がmysqlのint(5)の長さはどれくらいですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。