MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLにおけるUNSIGNEDのSMALLINT(6)の最大値とは?範囲と表示幅を徹底解説

MySQLのSMALLINT(6) UNSIGNEDの最大値は65535

MySQLにおける SMALLINT(6) のUNSIGNED(符号なし)型の最大値は 65535 です。ここで重要なポイントは、括弧内の「6」という数字が実際の保存可能な値の範囲には一切影響しないという点です。この数値はあくまで「表示幅(display width)」を指定するものであり、コマンドライン上での値の見た目を整えるためにのみ使用されます。

SMALLINTの各パターンにおける値の範囲

SMALLINT型は2バイト(16ビット)の整数型であり、符号の有無によって以下のような範囲を持ちます。

  • 符号あり(SIGNED)の最小値: -32768
  • 符号あり(SIGNED)の最大値: 32767
  • 符号なし(UNSIGNED)の最大値: 65535

ZEROFILLを使った動作確認

それでは、ZEROFILL オプションと組み合わせて、表示幅がどのように機能するのかを実際に確認してみましょう。まず、以下のクエリでテーブルを作成します。

mysql> create table smallIntDemo
-> (
-> FirstNumber smallint(6) zerofill
-> );
Query OK, 0 rows affected (1.95 sec)

テーブルが作成できたら、INSERTコマンドを使ってレコードを挿入していきます。なお、65535を超える値を挿入しようとした場合、それが最大値であるためテーブルには登録されず、エラーが発生します。

範囲内の値を挿入する場合

まずは最大値未満の値を順番に挿入してみます。

mysql> insert into smallIntDemo values(2);
Query OK, 1 row affected (0.21 sec)

mysql> insert into smallIntDemo values(23);
Query OK, 1 row affected (0.21 sec)

mysql> insert into smallIntDemo values(234);
Query OK, 1 row affected (0.17 sec)

mysql> insert into smallIntDemo values(2345);
Query OK, 1 row affected (0.15 sec)

mysql> insert into smallIntDemo values(23456);
Query OK, 1 row affected (0.48 sec)

範囲外の値を挿入した場合のエラー

次に、最大値65535を超える値を挿入しようとするとどうなるかを見てみましょう。以下のように、範囲外の値はテーブルに挿入されずエラーとなります。

mysql> insert into smallIntDemo values(234567);
ERROR 1264 (22003): Out of range value for column 'FirstNumber' at row 1

mysql> insert into smallIntDemo values(111111);
ERROR 1264 (22003): Out of range value for column 'FirstNumber' at row 1

SELECT文で結果を確認する

登録されたすべてのレコードをSELECT文で表示してみます。

mysql> select *from smallIntDemo;

以下の出力結果を見ると、ZEROFILL によって指定された表示幅(ここでは6桁)がどのように適用されているかがわかります。桁数が6に満たない値は、先頭が0で埋められて表示されます。

+-------------+
| FirstNumber |
+-------------+
|      000002 |
|      000023 |
|      000234 |
|      002345 |
|      023456 |
+-------------+
5 rows in set (0.00 sec)

まとめ

MySQLの SMALLINT(6) UNSIGNEDにおける最大値は65535であり、「6」は表示幅の指定に過ぎません。ただし、MySQL 8.0以降では表示幅の指定は非推奨となっているため、新規の開発では SMALLINT UNSIGNED のように表示幅を省略して記述することが推奨されています。値の範囲を正しく理解しておくことで、意図しない挿入エラーを防ぎ、適切なデータ型設計につなげることができます。

  1. MySQLのSMALLINTに相当するJavaの型は?short型との対応関係を解説

    MySQLのSMALLINTに相当するJavaのデータ型は、short型です。Javaのshort型は2バイト(16ビット)の符号付き整数で、-32768から32767までの範囲の値を扱うことができます。MySQLのSMALLINTも同様に2バイトで、同じ範囲の値を格納可能です。MySQLのSMALLINTとJavaのshort型の比較項目MySQL(SMALLINT)Java(short)サイズ2バイト(16ビット)2バイト(16ビット)値の範囲-32768 ~ 32767-32768 ~ 32767備考UNSIGNEDを指定すると0 ~ 65535になる符号付きのみなお、MySQLでUNS

  2. C#のint型が取れる最大値はいくつ?整数型の範囲を一覧で解説

    C#における整数型 int の最大値は 2,147,483,647(約21億)です。これは32ビット符号付き整数の上限にあたり、プログラム内では int.MaxValue という定数で取得することもできます。逆に最小値は −2,147,483,648 で、int.MinValue で参照可能です。C#の主なデータ型と値の範囲一覧以下の表は、C#で利用できる主なデータ型と、それぞれの意味・範囲・既定値をまとめたものです。用途に応じて適切な型を選ぶことで、メモリの無駄遣いやオーバーフローを防ぐことができます。型説明範囲既定値boolブール値(真偽値)true または falsefalsebyte8