1. ホーム
  2. マイスル

[解決済み】MySQLの型。BigInt(20) vs Int(20)

2022-04-15 21:36:49

質問

とはどう違うのでしょうか? BigInt , MediumInt および Int は...もっと大きな数字を許容するのは当然と思われるのですが、しかし、そのために Int(20) または BigInt(20) ということで、必ずしもサイズにこだわる必要はないようです。

何かヒントがあれば嬉しいのですが、ちょっと興味があります。私はこれまで MySQL は、ビジネスニーズを適用してタイプを選択するように努めていますが、この点については全く理解していませんでした。

どうすればいい?

参照 http://dev.mysql.com/doc/refman/8.0/en/numeric-types.html

  • INT は4バイトの符号付き整数である。

  • BIGINT は8バイトの符号付き整数である。

それぞれのバイト数に収まる範囲内で、それ以上の値もそれ以下の値も受け付けない。つまり、2 32 の値は INT と2 64 の値は BIGINT .

の20は INT(20)BIGINT(20) はほとんど何も意味しません。 表示幅を示すヒントです。ストレージやカラムが受け入れる値の範囲とは何の関係もない。

実質的に、これは ZEROFILL オプションを使用します。

CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;

+----------------------+
| bar                  |
+----------------------+
| 00000000000000001234 |
+----------------------+

MySQL ユーザがよく混乱するのが INT(20) と同じように、サイズ制限だと思い込んでしまうのです。 CHAR(20) . これは、そうではありません。