MySQL int(11)の意味

今回は、MySQLのint()括弧内の値について調べていきたいと思います。

int()の意味

int_1 INT(11)

注意することは上記の1の意味は1桁保存できるよ〜という意味ではありません。

それでは検証してみまましょう

検証

CREATE TABLE test (
    int_1 INT(1),
    int_2 INT(5),
    int_3 INT(9),
    int_4 INT(11),
 )ENGINE=INNODB DEFAULT CHAR SET =UTF8;
INSERT INTO test VALUES(1,1,1,1);
 INSERT INTO test VALUES(12345,12345,12345,12345);
 INSERT INTO test VALUES(1234567890,1234567890,1234567890,1234567890);

上記のSelectの結果はどうでしょう!

int_1int_2int_3int_4
1111
12345123451234512345
1234567890123456789012345678901234567890

なんと!上記のような結果が出ます。

理由

https://dev.mysql.com/doc/refman/8.0/en/numeric-types.html

実はint(11)の数字の意味は「ZEROFILL」のオプションのための値です。ZEROFILLは画面に表示するときに先頭0埋めで表示してというオプションです。

CREATE TABLE test (
    int_1 INT(1),
    int_1_z INT(1) ZEROFILL,
    int_2 INT(5),
    int_2_z INT(5) ZEROFILL,
    int_3 INT(9),
    int_3_z INT(9) ZEROFILL,
 )ENGINE=INNODB DEFAULT CHAR SET =UTF8;
INSERT INTO test VALUES(1,1,1,1,1,1);
 INSERT INTO int_test VALUES(12345,12345,12345,12345,12345,12345);
 INSERT INTO int_test VALUES(1234567890,1234567890,1234567890,1234567890,1234567890,1234567890);

上記のSelect結果も確認してみましょう。

int_1int_1_zint_2int_2_zint_3int_3_z
111000011000000001
1234512345123451234512345000012345
123456789012345678901234567890123456789012345678901234567890

先頭0埋めされることを確認できます。

終わり

int(11)の括弧内の値は「ZEROFILL」オプションがないと意味がないということでした。

コメントを残す