ホームページ >データベース >mysql チュートリアル >MYSQL で int(11) は何を表しますか

MYSQL で int(11) は何を表しますか

小云云
小云云オリジナル
2017-12-19 16:13:262437ブラウズ

仕事で mysql を扱うことが多いのですが、mysql のさまざまなフィールドの型については、いつも漠然と理解していました。MYSQL の int(11) は何を表しているのでしょうか?あまり知られていないかもしれないので、まとめて記録するためにこの記事を書きました。

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`)
)
2 つのデータを挿入します

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;
idabcde1100000000001 1000011212345678900123456789012345678901234567890 1234567890
注: ナビゲーション ソフトウェアを使用してクエリを実行する場合、左側の 0は表示されませんが、データをエクスポートすると、ソフトウェアがデータ形式を処理したのでしょうか。

前の例から次の結論を導き出すことができます:

  1. フィールドが unsigned に設定され、ゼロ属性が埋め込まれている場合、このフィールドにどのような値が格納されていても、値の長さは一致します。設定された表示幅 たとえば、上記の例のフィールド b では、挿入された値 1 は 00000000001 として表示され、長さが 11 桁に達するまで左側に 10 個のゼロが追加されます。たとえば、フィールド d は int(5) に設定されていますが、

  2. で設定された文字幅は 10 桁の数値を格納することができます。 d field int(5) のように、値の長さが幅を満たしていません。1 を挿入すると長さが 5 未満になるため、5 桁に達するまで左側に 4 つのゼロを追加しますが、1234567890 を挿入すると超えます。 5 桁であり、表示幅はこの時点では機能しません。

  3. 関連する推奨事項:

MYSQL がクエリ データの結果を自動的にシリアル化する方法に関するチュートリアル


MySQL データ ファイルの保存場所を表示する方法

mysql ページング パフォーマンスの調査

以上がMYSQL で int(11) は何を表しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。