1. ホーム
  2. mysql

[解決済み] MySQLのtinyint、smallint、mediumint、bigint、intの違いは何ですか?

2022-03-23 01:19:43

質問

MySQLのtinyint、smallint、mediumint、bigint、intの違いは何ですか?

これらはどのような場合に使用するのでしょうか?

どのように解決するのですか?

それぞれ占有するスペースが異なり、許容範囲も異なる。

以下は、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 

unsigned" 型は MySQL でのみ利用可能で、他は符号付きの範囲を使用するだけですが、1 つの顕著な例外があります。 tinyint SQL Server では符号なし で、値の範囲は 0 から 255 です。