【MySQL】整数型(TINYINT / SMALLINT / MEDIUMINT / INT / BIGINT)

【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