ホームページ  >  記事  >  データベース  >  MySQL int型の長さ値問題の詳しい解説

MySQL int型の長さ値問題の詳しい解説

藏色散人
藏色散人転載
2019-09-19 10:01:353443ブラウズ

mysql テーブル作成時のint型以降の長さは何を表しているのでしょうか?列に値を格納できる最大幅はありますか? int (1) に設定しても 10,100,1000 を格納できるのはなぜですか?

当時、int (1) の長さが許容される格納幅を表していないことはわかっていましたが、合理的な説明がなかった。つまり、この長さが何を表すのかはあまり勉強したことがなく、普段は int (11) を使っているのですが、なぜ 11 ビット必要なのかわかりません。そこで、インターネットでいくつかの情報を確認し、mysql マニュアルに int データ型について書かれていることを注意深く読みました。整数型のストレージと範囲 (mysql マニュアルより)

テーブルには 4 つの列があります: フィールド タイプ、占有バイト数、格納可能な最小値、格納できる最大値

int 型を例に挙げてみましょう:

MySQL int型の長さ値問題の詳しい解説int 型は 4 バイトを占有します。コンピュータの原理を勉強した学生なら、バイト (byte) ではないことを知っているはずです。コンピュータ ストレージの最小単位です。バイトより小さい単位、ビットもあります。ビットは 0 または 1 を表し、8 ビットで 1 バイトを構成します。一般に、バイトは大文字の B で表されます。バイト、およびビットを表すビット。

コンピュータのストレージ ユニットの変換:

1B=8b

1KB=1024B

1MB= 1024KB

次に、int 型で格納できるバイト数に応じて、int UNSIGNED (符号なし) 型で格納できる最小値は 0、最大値は 4294967295 (つまり 4B) であると計算できます。 =32b、最大値は 32 個で構成されます);

次に、テーブルを作成するときのフィールドの長さについて説明します。

CREATE TABLE test (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
number INT( 5 ) NOT NULL
) ENGINE = MYISAM ;

テスト テーブルは次のとおりです。例として数値フィールドを取り上げます。私が構築したものは int (5)

であることがわかります。mysql マニュアルでは、この長さ/値は「M」で表されます。注意深い友人なら、mysql マニュアルの次の文に気づいたはずです。M は最大表示幅を示します。最大有効表示幅は 255 です。表示幅は、ストレージ サイズや型に含まれる値の範囲とは何の関係もありません。

この文は理解しにくいようです。ここには、「最大値」という混乱しやすいキーワードがあるためです。 「表示幅」 最初の反応 このフィールドに格納できる最大値の幅です。 int (1) を組み込むとデータ 10 を保存できないと考えましたが、そうではありません。

MySQL int型の長さ値問題の詳しい解説この M=5 は単純に理解できます。この長さを作成したのは、MYSQL データベースに次のことを伝えるためです。私たちのフィールドです。保存されるデータの幅は 5 桁です。もちろん、5 桁でなくても (この型の保存範囲内であれば)、MYSQL は通常どおりに保存することもできます。これは単語の説明にもなります。上に赤でマークされています。

このフィールドの「属性」を UNSIGNED ZEROFILL に変更して、その効果を確認します。

##私の番号フィールドが表示されます。長さ (M)=5、属性 = UNSIGNED ZEROFILL (符号なし、桁数を埋めるのに 0 を使用)、この属性を設定した後、テーブルにデータを挿入すると、システムは自動的に数値フィールド M に未満の値を埋めます。左側に 0 を含む 5 桁; 効果は次のとおりです

MySQL int型の長さ値問題の詳しい解説マニュアルには次のような文もあります。「mysql がいくつかの複雑な結合に対して一時テーブルを生成するとき、この場合、mysql はすべての値が元の列幅に適していると信頼するため、問題が発生する可能性があります。これは、この幅を適切に設定する方法も疑問に思います。

しかし、この文書を読んだ後に明確に知っておくべきことの 1 つは、長さ M は保存する数値のサイズとは何の関係もないということです。

以上がMySQL int型の長さ値問題の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。