MySQL の tinyint、smallint、mediumint、bigint、int の違いは何ですか?
どのような場合にこれらを使用すればよいでしょうか?
ベストアンサー1
それぞれ占有するスペースの量が異なり、許容される値の範囲も異なります。
SQL Serverの値のサイズと範囲は次のとおりです。他の RDBMS にも同様のドキュメントがあります。
結局、それらはすべて同じ仕様を使用していますが (以下に示すいくつかの小さな例外を除く)、それらの型のさまざまな組み合わせをサポートしています (Oracle はNUMBER
データ型しかないため含まれていません。上記のリンクを参照してください)。
| SQL Server MySQL Postgres DB2
---------------------------------------------------
tinyint | X X
smallint | X X X X
mediumint | X
int/integer | X X X X
bigint | X X X X
これらは同じ値の範囲をサポートしており (以下の 1 つの例外を除く)、すべて同じストレージ要件を備えています。
| Bytes Range (signed) Range (unsigned)
--------------------------------------------------------------------------------------------
tinyint | 1 byte -128 to 127 0 to 255
smallint | 2 bytes -32768 to 32767 0 to 65535
mediumint | 3 bytes -8388608 to 8388607 0 to 16777215
int/integer | 4 bytes -2147483648 to 2147483647 0 to 4294967295
bigint | 8 bytes -9223372036854775808 to 9223372036854775807 0 to 18446744073709551615
「符号なし」型はMySQLでのみ使用可能で、残りは符号付き範囲のみを使用しますが、1つの注目すべき例外があります。SQL tinyint
Serverでは符号なしで、値の範囲は0から255です。