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つの注目に値する例外があります。 SQL Serverのtinyint
はunsigned で、0から255の値の範囲
必要なストレージのサイズとその数がどれだけ大きくなる可能性があるか
sQL Server上で
tinyint 1バイト、0〜255
smallint 2バイト、-2 ^ 15(-32,768)から2 ^ 15-1(32,767)
int 4バイト、-2 ^ 31(-2,147,483,648)から2 ^ 31-1(2,147,483,647)
bigint 8バイト、-2 ^ 63(-9,223,372,036,854,775,808)から2 ^ 63-1(9,223,372,036,854,775,807)
4のうち1を格納できますが、bigintは8バイトを使用し、tinyintは1バイトを使用します。
それらはMySQLのデータ型のようです。
ドキュメンテーション によると、彼らはかかります:
そして当然のことながら、ますます広い範囲の数字を受け入れます。
現実の世界でこれらのデータ型が使用されるようになると、特定の整数型を使用するのはやり過ぎや使い過ぎになる可能性があることを理解しておくことが非常に重要です。たとえば、表のemployeeCountにintegerデータ型を使用すると、employeeは、マイナス2億からプラス2億、またはゼロから約40億(符号なし)の整数値の範囲をサポートするため、やり過ぎになる可能性があります。したがって、Walmartのように米国の最大雇用者で、約220万人の従業員がemployeeCount列に整数データ型を使用していると考える場合でも、不要です。そのような場合には、例えば、mediumint(0〜1600万(符号なし)をサポート)を使用します。あなたの範囲が異常に大きいと予想されるならば、あなたはあなたがダニエルのノートからわかることができるようにbigintを考慮するかもしれないと言ったことは私が解読する気にするより大きい範囲をサポートする。
違いは、各整数に割り当てられたメモリの量と、それぞれが格納できる数の大きさです。
データ型範囲記憶域
bigint -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807) 8 Bytes
int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647) 4 Bytes
smallint -2^15 (-32,768) to 2^15-1 (32,767) 2 Bytes
tinyint 0 to 255 1 Byte
例
次の例では、bigint、int、smallint、およびtinyintデータ型を使用してテーブルを作成します。値は各列に挿入され、SELECTステートメントに返されます。
CREATE TABLE dbo.MyTable
(
MyBigIntColumn bigint
,MyIntColumn int
,MySmallIntColumn smallint
,MyTinyIntColumn tinyint
);
GO
INSERT INTO dbo.MyTable VALUES (9223372036854775807, 214483647,32767,255);
GO
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn
FROM dbo.MyTable;