【MySQL】整数型(TINYINT / SMALLINT / MEDIUMINT / INT / BIGINT)
MySQLの整数型について解説します。
検証環境
整数型
整数型は小数点以下がない数値の型です。
MySQLには5種類の整数型があり、各型は記憶可能な数値の幅が異なります。
また、符号有無(マイナス値の有無)によって扱える数値の範囲が決まります。
型 | 範囲 | 符号なし |
---|---|---|
TINYINT | -128 ~ 127 | 0 ~ 255 |
SMALLINT | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | -263 ~ 264-1 | 0 ~ 264-1 |
TINYINT
TINYINTは-128 ~ 127の数値を扱えます。
基本構文
カラム名 TINYINT
サンプル
mysql> CREATE TABLE sample ( num TINYINT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 127 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( -128 );
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 128 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> INSERT INTO sample ( num ) VALUE ( -129 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
128以上または-129以下の値は10〜14行目のようにエラーが発生します。
SMALLINT
SMALLINTは-32768 ~ 32767の数値を扱えます。
基本構文
カラム名 SMALLINT
サンプル
mysql> CREATE TABLE sample ( num SMALLINT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 32767 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( -32768 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 32768 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> INSERT INTO sample ( num ) VALUE ( -32769 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
32768以上または-32769以下の値は10〜14行目のようにエラーが発生します。
MEDIUMINT
MEDIUMINTは-8388608 ~ 8388607の値を扱えます。
基本構文
カラム名 MEDIUMINT
サンプル
mysql> CREATE TABLE sample ( num MEDIUMINT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 8388607 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( -8388608 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 8388608 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> INSERT INTO sample ( num ) VALUE ( -8388609 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
8388608以上または-8388609以下の値は10〜14行目のようにエラーが発生します。
INT
INTは-2147483648 ~ 2147483647の値を扱えます。
基本構文
カラム名 INT
サンプル
mysql> CREATE TABLE sample ( num INT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 2147483647 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( -2147483648 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 2147483648 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> INSERT INTO sample ( num ) VALUE ( -2147483649 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
2147483648以上または-2147483649以下の値は10〜14行目のようにエラーが発生します。
BIGINT
BIGINTは-263 ~ 264-1の値を扱えます。
基本構文
カラム名 BIGINT
サンプル
mysql> CREATE TABLE sample ( num BIGINT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 8388608 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( -8388609 );
Query OK, 1 row affected (0.00 sec)
BIGINTは整数型の中で扱える幅が一番大きい型です。
符号有無(UNSIGNED)
整数型はデフォルトで正の数(0〜プラス値)と負の数(マイナス値)を扱いますが、正の数のみ扱うようにすることが可能です。
そのようにした場合、各整数型の扱える値の範囲が変わります。
※ 冒頭の表の『符号なし』の範囲。
基本構文
整数型 UNSIGNED
型名に続いてスペースを入れてUNSIGNED
を記述します。
サンプル
mysql> CREATE TABLE sample ( num TINYINT UNSIGNED );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 0 );
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 255 );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO sample ( num ) VALUE ( 256 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> INSERT INTO sample ( num ) VALUE ( -1 );
ERROR 1264 (22003): Out of range value for column 'num' at row 1