web-dev-qa-db-ja.com

MySQLでINT(1)とTINYINT(1)を使用することに違いはありますか?

INT(1)はTINYINT(1)とまったく同じであると仮定していますが、実際にはわかりません。単一の整数にしかなれない値(値0-9など)があるときはいつでも、常にINT(1)を使用して整数であると言い、1文字だけになると考えています。値は0から9のみです(間違っている場合は説明してください)。私は、あなたが数字をキャストできる他のタイプのINTを常に無視してきました。私はMySQLに精通していないので、それでできるもっと複雑なことを避ける傾向があります。

だから私の質問、さまざまな整数型INT、TINYINT、SMALLINT、MEDIUMINT、BIGINTに違いがありますか?各型に1の長さを定義すると??そうでない場合、とにかくそれらを使用する必要があります(私はそれらをより意味的な意味で使用することがわかります、TINYINTは単なるINTよりも具体的です)?もしそうなら、私は簡単に(そして/または私は)データベースを通過し、すべてのINT(1)フィールドをTINYINT(1)フィールドに変更するだけでいいですか?

39
animuson

整数列タイプの括弧内の数字は「表示幅」です。これらは事前定義されているため、ストレージ要件には影響しません。

参考文献

37
Phil

ここでは、より良い方法でそれを理解します!

tinyint: 1 byte, -128 to +127 / 0 to 255 (unsigned)
smallint: 2 bytes, -32,768 to +32,767 / 0 to 65,535 (unsigned)
mediumint: 3 bytes, -8,388,608 to 8,388,607 / 0 to 16,777,215 (unsigned)
int/integer: 4 bytes, -2,147,483,648 to +2,147,483,647 / 0 to 4,294,967,295 (unsigned)
bigint: 8 bytes, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 / 0 to 18,446,744,073,709,551,615 (unsigned)
46
Cody

受け入れられた答えが説明したように:

括弧内の数字は、そのフィールドを表示する文字の数を示しますnotのストレージサイズフィールド。

ただし、ストレージサイズを知りたい場合は、MySQLソースドキュメントを確認する必要があります。

ソース: MySQL Docs:整数型(正確な値)-INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT

[〜#〜] tinyint [〜#〜]:1バイト、-128〜127符号付き、0〜255符号なし

[〜#〜] smallint [〜#〜]:2バイト、-32768〜32767符号付き、0〜65535符号なし

[〜#〜] mediumint [〜#〜]:3バイト、-8388608から8388607に署名、0から16777215に署名なし

[〜#〜] int [〜#〜]:4バイト、-2147483648〜2147483647符号付き、0〜4294967295符号なし

[〜#〜] bigint [〜#〜]:8バイト、-2 ^ 63〜2 ^ 63-1署名、0〜2 ^ 64 -1符号なし

1
HoldOffHunger