仕事で mysql を扱うことが多いのですが、mysql のさまざまなフィールドの型については、いつも漠然と理解していました。MYSQL の int(11) は何を表しているのでしょうか?あまり知られていないかもしれないので、まとめて記録するためにこの記事を書きました。
実際、上の図は int 型の基本的な知識を非常に明確にしました。ここで、一般的に使用される int(11) が何を意味するのかについて説明したいと思います。これは、int の長さが 11 桁であるという制限を表していました。ある日、ある記事を読んで、11 が文字の長さを表すのではなく、フィールドの型が 表示される幅を表すことに気づきました。 int、表示幅が何に設定されていても、int 型で保存できる最大値と最小値は常に固定です 以下にオリジナルのテキストの抜粋をいくつか示します
括弧内の数字は最大値を決定しません。整数フィールドに格納できる最大値と最小値は常に固定されています。列の表示幅は、その列に格納できる最大値には影響しません。 INT(5) または INT(11) では、同じ最大値を格納できます。 また、INT(20) 列がある場合、20 桁の値 (BIGINT 値) を格納できるわけではありません。列には INT の最大値までしか格納されませんつまり、記事にあるように、つまり、int 型の表示幅をどのように設定しても、int が格納できる最大値と最小値は固定ですでは、この表示幅は何に役立つのでしょうか?
int型フィールドを
unsignedかつゼロ埋め(UNSIGNED ZEROFILL)に設定した場合、桁数が設定した表示幅に満たない場合、設定した表示幅になるまで値の前にゼロが追加されますなぜですか? ZEROFILL 属性は暗黙的に値を符号なし型に変換するため、符号なしの制限があり、負の値は格納できません。
CREATE TABLE int_demo ( id INT(11) NOT NULL AUTO_INCREMENT, a INT(11) NOT NULL, b INT(11) UNSIGNED ZEROFILL NOT NULL, c INT(5) DEFAULT NULL, d INT(5) UNSIGNED ZEROFILL NOT NULL, e INT(15) DEFAULT NULL, PRIMARY KEY (`id`) )
INSERT INTO int_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1); INSERT INTO int_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);
select * from int_demo;
a | b | c | d | e | |
---|---|---|---|---|---|
1 | 00000000001 | 1 | 00001 | 1 | |
1234567890 | 01234567890 | 1234567890 | 1234567890 | 1234567890 |
以上がMYSQL で int(11) は何を表しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。