MySQL :: カラムの型 int(10) の10の意味

カラムの型を int(10) と指定した場合の 10 は、「ZEROFILL」オプション指定時の桁数を明示的に指示していることを意味する。

例えば以下のようなテーブルを作成して

CREATE TABLE tablename (
  field_int10 int(10) zerofill NOT NULL,
  field_int5 int(5) zerofill NOT NULL
);

INSERTクエリを発行

INSERT INTO tablename(field_int10, field_int5) VALUES (1, 1);

SELECT してみると

mysql> select * from tablename;
+-------------+------------+
| field_int10 | field_int5 |
+-------------+------------+
|  0000000001 |      00001 |
+-------------+------------+
1 row in set (0.00 sec)

field_int10 と field_int5 はそれぞれ指定した桁数で ZEROFILL されている。



ちなみに、桁数を指定せずにカラムを作成した場合は 10 が指定されたものとみなされる。

mysql> CREATE TABLE tablename (field_int int zerofill NOT NULL);

mysql> INSERT INTO tablename(field_int) VALUES (1);

mysql> select * from tablename;
+------------+
| field_int  |
+------------+
| 0000000001 |
+------------+
1 row in set (0.00 sec)

これは、int型に格納できる最大値が unsigned指定で「4294967295」だから。「4294967295」は 10 桁である。



よって int(10) だの int(5) だの指定は、特に理由がない限りすべきでない。