MySQLのint(11)とint(10)に違いはありますか?



Is There Any Difference Between Int



前書き

面接があったのを今でも覚えていますが、面接官から聞かれました。int(10)int(11)違いは何ですか、長さの違いだと思います!インタビュアーは最後にフィードバックをしなかったので、私は正しいと思いました。同級生がこの件について話してくれるまで、次のことを調べてみると、簡単なことは何もないことがわかりました...

最後の結果は :here Mデータベースに保存されている特定の長さではありません。以前は間違えていました。int(3) 3つの長さの数字しか保存できません。int(11) 11の長さの数字を保存します。これは大きな間違いです。



int(10) 2147483647の値を表すこともできますint(11)表すこともできます。

さまざまな効果を確認するには、タイプを作成するときに忘れずに追加してください。zerofillこの値は、0で埋められていることを示します。そうでない場合、効果は表示されません。



通常、データベースを作成するときにこのオプションを追加しないため、両者に違いはないと言えます。

ステートメントフィールドのタイプがintの瞬間から、int 4バイト、1バイトは8ビット、つまり4*8=32であり、表現できる桁数は2の32乗| _です。 + _ |。

(2^32 = 4 294 967 296 numbers)数値も4 294 967 296もちろん、正の符号と負の符号を区別すると、数値は小さくなります。



ナレッジポイント

0~4 294 967 295中央int(M)最大表示幅を示し、最大有効表示幅は255であり、表示幅はストレージサイズまたはタイプに含まれる値の範囲に依存しません。

Mそしておおよその数値データ型Let's first talk about the numeric types of MySQL. MySQL supports all standard SQL numeric data types. These types include strict numeric data types (INTEGER, SMALLINT, DECIMAL, and NUMERIC)。キーワード(FLOAT, REAL, and DOUBLE PRECISION)はいINT同義語、キーワードINTEGERはいDECシノニム。

BITデータ型はビットフィールド値を保存し、DECIMALをサポートしますMyISAM、MEMORY、InnoDB tableを使用します。 SQL標準の拡張として、MySQLは整数型もサポートしています。BDB。次の表は、必要な各整数型のストレージとスコープを示しています。

MySQL typeキーワードの後に​​括弧で囲まれた整数値の表示幅(たとえば、TINYINT, MEDIUMINT, and BIGINT)。このオプションの表示幅は、幅が指定された列幅よりも小さい値が表示されるときに、幅が左から塗りつぶされることを指定します。表示幅は、列に保存できる値の範囲を制限するものではなく、列の指定された幅を超える値の表示を制限するものでもありません。

オプションの拡張属性と組み合わせた場合INT(4)使用すると、デフォルトの補足スペースはゼロに置き換えられます。たとえば、次のステートメントの場合ZEROFILL列の値は00004として取得されます。表示幅を超える値を整数列に保存すると、MySQLが複雑な結合の一時テーブルを生成するときに問題が発生することに注意してください。これらの場合、MySQLはデータが適合すると信じているためです。元の列幅。

すべての整数型は、オプションの(非標準)属性INT(5) ZEROFILLを持つことができます。符号なしの値は、列に負でない数値のみを許可する必要があり、列がより広い上限値を必要とする場合に使用できます。

総括する

などUNSIGNED vs int(2)括弧内の文字は、整数に必要なストレージスペースのサイズに関係なく、表示幅、整数列の表示幅、およびMySQLが列値を表示するために必要な文字数を示します。int(11)タイプフィールドに格納できるデータの上限は、2147483647(符号付き)および4294967295(符号なし)のままです。

Githubアドレス: https://github.com/Bylant/LeetCode

CSDNアドレス: https://blog.csdn.net/ZBylant
WeChat公開番号