MysqlのBigInt(20)、Int(20)、Bigint(32)に違いはありますか?



Is There Difference Between Bigint



オリジナル:http://stackoverflow.com/questions/3135804/types-in-mysql-bigint20-vs-int20-etcc

http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html



見る http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html

INTは4バイトの符号付き整数です。 BIGINTは、8バイトの符号付き整数です。



INT(20)とBIGINT(20)の20は、ほとんど意味がありません。これは表示幅のヒントであり、ストレージとは関係ありません。実際には、のみに影響します ゼロフィル オプション:

CREATE TABLE foo ( bar INT(20) ZEROFILL ) INSERT INTO foo (bar) VALUES (1234) SELECT bar from foo +----------------------+ | bar | +----------------------+ | 00000000000000001234 | +----------------------+

型宣言の括弧内の数字は 表示幅 、データ型に格納できる値の範囲とは関係ありません。 Int(20)を宣言できるからといって10 ^ 20までの値を格納できるという意味ではありません。

[...]このオプションの表示幅は、アプリケーションが列に指定された幅よりも小さい整数値をスペースで左パディングして表示するために使用できます。 ..。



表示幅は、列に格納できる値の範囲や、列に指定された幅を超える値に対して表示される桁数を制限しません。 たとえば、SMALLINT(3)として指定された列の通常のSMALLINT範囲は-32768〜32767であり、3文字で許可される範囲外の値は3文字を超えて表示されます。

各MySQLデータ型に格納できる最大値と最小値のリストについては、を参照してください。 ここに

Mysql B 1B、2B、3B、4B、8B)

4バイトを占めるINTは、署名されていても、JAVAのintと同じです。21億そのようなビッグデータ。 そのため、大規模なWebサイトのUIDを含め、ほとんどの場合、このような大規模なデータを使用することはできません。友人関係テーブルはそれを超える可能性があり、関係テーブルはBIGINTの使用を検討できます。 BIGINTを使用するために通常のタイムスタンプが必要です。要するに、BIGINTを簡単に使用しないでください、それは無駄です!