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

MySQLの「UNSIGNED(符号なし)」とは?意味と使いどころをわかりやすく解説

MySQLにおける「UNSIGNED(符号なし)」は、数値型のカラムに指定できる属性のひとつです。UNSIGNEDを指定したカラムには負の値(マイナスの数値)を挿入できず、0以上の正の数値のみが格納可能になります。その代わり、通常の符号付き整数と比べて表現できる数値の上限が約2倍に拡張されるのが大きな特徴です。

たとえば、UNSIGNED INT型で扱える最大値は 4294967295 です。非常に大きな正の数値を扱いたい場合にUNSIGNED型が役立ちます。

※注意:負の値を挿入しようとすると、MySQLエラーが発生します。

UNSIGNEDの使用例

それでは、実際にUNSIGNED型のカラムを持つテーブルを作成してみましょう。以下がテーブル作成用のクエリです。

mysql> create table UnsignedDemoWithPositiveValue
    -> (
    -> Distance int unsigned
    -> );
Query OK, 0 rows affected (0.86 sec)

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

UNSIGNED INTの上限である4294967295より大きい値を挿入しようとすると、値が範囲外のためエラーが発生します。

範囲外の値を挿入してみます。

mysql> insert into UnsignedDemoWithPositiveValue values(4294967296);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1

上記の例では、範囲外である4294967296を挿入したため、エラーが発生しました。

次に、上限値ちょうどの4294967295を挿入してみます。

mysql> insert into UnsignedDemoWithPositiveValue values(4294967295);
Query OK, 1 row affected (0.30 sec)

ご覧のとおり、クエリは正常に実行されました。

負の値を挿入した場合

続いて、別の例を見てみましょう。負のレコードを挿入すると、以下のようなエラーが表示されます。

mysql> insert into UnsignedDemoWithPositiveValue values(-124);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1

今度は正の値である124のみを挿入します。クエリは以下のとおりです。

mysql> insert into UnsignedDemoWithPositiveValue values(124);
Query OK, 1 row affected (0.86 sec)

上記のように、クエリは正常に実行されました。

挿入されたデータの確認

SELECT文を使って、登録されたレコードを表示してみましょう。クエリは以下のとおりです。

mysql> select * from UnsignedDemoWithPositiveValue;

実行結果は以下のとおりです。

+------------+
| Distance   |
+------------+
| 4294967295 |
| 124        |
+------------+
2 rows in set (0.00 sec)

まとめ:UNSIGNEDを使うべきケース

UNSIGNEDは以下のような場面で活用できます。

  • 年齢・個数・距離など、負にならない値を扱うカラム
  • IDやアクセスカウンタなど、大きな正の数値を扱いたい場合
  • ストレージ容量を変えずに、表現できる正の範囲を広げたい場合

一方で、計算結果がマイナスになる可能性があるカラム(口座残高など)にUNSIGNEDを指定するとエラーの原因になるため、注意が必要です。データの性質に合わせて適切に使い分けましょう。

  1. XInputとDirectInputとは?意味と違いをわかりやすく解説

    「XInput」や「DirectInput」という言葉を、Windowsで使えるコントローラーの話題の中で耳にしたことはありませんか?しかし、これらが実際に何を意味するのか、そしてどちらに対応しているかが重要なのか、よく分からないという人も多いのではないでしょうか。 この記事では、両者の基本的な意味から違い、そして自分のコントローラーがどちらの規格なのかを見分ける方法まで、わかりやすく解説していきます。 XInput・DirectInput・入力ライブラリとは これらの用語はすべて、コントローラーとシステムの間に存在するAPI(アプリケーション・プログラミング・インターフェース)を指しています

  2. HDRとは?AndroidスマホでHDR撮影を使いこなす方法

    ここ数年でスマートフォンのカメラ性能は目覚ましい進化を遂げました。多くの人は従来のデジタルカメラを手放し、手軽さに優れたスマホでの撮影を選ぶようになっています。この変化を支えているのは、ハードウェアとソフトウェアの両面での進化です。スマホのカメラ機能が高度になるにつれ、写真に対してより細かくコントロールできるようになりました。現在のほとんどのAndroidスマホには「HDR」という設定項目がありますが、そもそもHDRとは何なのでしょうか。そして、どんなときに使うべきなのでしょうか。 HDRの仕組み HDRはハイダイナミックレンジ(High Dynamic Range)の略称です。「ダイナミッ