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

MySQLのUNSIGNED(符号なし)とは?意味と使い方を実例付きで解説

MySQLにおけるUNSIGNED(符号なし)とは

UNSIGNED(符号なし)属性を指定したカラムには、正の数値のみを保存できます。負の数値は一切入力することができません。

MySQLでは、INT型などの数値型はデフォルトで負の値も扱えますが、UNSIGNEDを付けると扱える範囲が0以上に限定され、その分だけ正の側の最大値が約2倍になります。例えば、通常のINT型は -2147483648〜2147483647 の範囲ですが、INT UNSIGNED の場合は 0〜4294967295 となります。

UNSIGNEDカラムを持つテーブルを作成する

まず、CREATEコマンドを使ってテーブルを作成し、UNSIGNEDの動作を確認してみましょう。

mysql> CREATE table UnsignedDemo
-> (
-> id int unsigned
-> );
Query OK, 0 rows affected (0.61 sec)

正の値を挿入する

続いて、INSERT文で正の値のみを登録します。

mysql> INSERT into UnsignedDemo values(124);
Query OK, 1 row affected (0.09 sec)

mysql> INSERT into UnsignedDemo values(78967);
Query OK, 1 row affected (0.14 sec)

登録されたデータを確認する

SELECTコマンドですべてのレコードを表示してみます。

mysql> SELECT * from UnsignedDemo;

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

+-------+
| id |
+-------+
| 124 |
| 78967 |
+-------+
2 rows in set (0.00 sec)

負の値を挿入するとどうなるか

次に、あえて負の値を挿入してみます。カラム「id」はUNSIGNEDとして定義されているため、この操作を行うと以下のようなエラーが発生します。

mysql> INSERT into UnsignedDemo values(-124);
ERROR 1264 (22003): Out of range value for column 'id' at row 1

このように「ERROR 1264 (22003): 範囲外の値」というエラーが出力されます。これは、UNSIGNEDカラムに負の数値を保存しようとしたことが原因です。

まとめ

  • UNSIGNEDを指定したカラムには、正の数値(および0)のみ保存できる
  • 負の値を挿入しようとすると「ERROR 1264」が発生する
  • IDやアクセスカウンターなど、負にならない数値を扱うカラムに特に有効
  1. MySQLのUNSIGNEDカラムに負の値を挿入するとどうなる?エラーの原因と挙動を解説

    MySQLでは、UNSIGNED(符号なし)属性が設定されたカラムに負の値を挿入しようとすると、エラーが発生します。まずは、UNSIGNEDフィールドを持つテーブルを作成して実際に確認してみましょう。mysql> create table UnsignedDemo -> ( -> Id int UNSIGNED -> ); Query OK, 0 rows affected (0.79 sec)UNSIGNEDとして宣言されたIdカラムに負の値を挿入すると、次のようなエラーが表示されます。mysql> INSERT INTO Unsigne

  2. MySQLの「SELECT TRUE」とは?意味と使い方を解説

    MySQLにおける「SELECT TRUE」の基本MySQLでは、SELECT TRUEというステートメントを実行すると、条件に一致する行ごとに「1」が返されます。これは、MySQLにおいてTRUE(真)という論理値が内部的に整数の「1」として扱われているためです。逆にFALSE(偽)は「0」に相当します。この記事では、実際にテーブルを作成し、SELECT TRUEがどのような結果を返すのかを具体的な例で確認していきます。検証用テーブルの作成まず、以下のコマンドでサンプルテーブルを作成します。mysql> create table DemoTable(Name varchar(100))