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やアクセスカウンターなど、負にならない数値を扱うカラムに特に有効
-
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
-
MySQLの「SELECT TRUE」とは?意味と使い方を解説
MySQLにおける「SELECT TRUE」の基本MySQLでは、SELECT TRUEというステートメントを実行すると、条件に一致する行ごとに「1」が返されます。これは、MySQLにおいてTRUE(真)という論理値が内部的に整数の「1」として扱われているためです。逆にFALSE(偽)は「0」に相当します。この記事では、実際にテーブルを作成し、SELECT TRUEがどのような結果を返すのかを具体的な例で確認していきます。検証用テーブルの作成まず、以下のコマンドでサンプルテーブルを作成します。mysql> create table DemoTable(Name varchar(100))