2019/02/24MySQLの数値型(int、tinyint、bigint、decimal、number、float)のまとめMySQLでテーブル設計をする際、数値型の設定についてよく調べることがあるので、それをまとめて記事にしてみることにしました。TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINT「固定小数点型」には、以下の型があります。DECIMAL、NUMERIC「浮動小数点型」には、以下の型があります。FLOAT、DOUBLEそれぞれについて詳しく解説をしていきます。TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINT「整数型」には、TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINTの型があります。「整数型」というように、TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINTには整数のみ保存することができます。「浮動小数点型」を使用します。TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINTの型の違いは、保存することができる数値の範囲(桁数)の違いです。ストレージを使用するバイト数(大きさ)の違いでもあります。大きさは、TINYINT、SMALLINT、MEDIUMINT、INTEGER(INT)、BIGINTの順番で大きくなります。0を中心にプラス値とマイナス値を持ちます。マイナスの数値が必要ない場合は、プラスの数値だけにすることもできます。その分持てる範囲が広がります。4,294,967,295※「INTEGER」は「INT」の別名で、どちらを記述しても同一の動きをします。18,446,744,073,709,551,615「整数型」で一番よくつかわれる型は「int」です。整数型でどれを使うか迷ったときは「int」を指定しておけばいいんじゃないでしょうか。「標準桁数」として記述した、「int」の場合は「int(11)」の表記ですが、create文で「int」を指定すると、標準で「int(11)」として設定される桁数を示しています。この「int(11)」は、型を何桁の数値として表示するか、を表すものです。「int(11)」とは、11桁で表示する、という意味です。2桁」として表示されます。6桁にはならない、という点です。表示する際の桁数を指定するものである、という点の理解が必要です。そのため、「int(100)」という設定も可能ですが、保存される値に差異はありません。SQLには存在しない、MySQL独自の記述方法です。0を中心にマイナスからプラスの値を取ります。255」の範囲が使えるようになります。具体的には下記の様に「UNSIGNED」を指定します。INSERTしようとするとエラーになります。2桁の部分にはスペースが入っています。これに対して、ZEROFILLを指定すると、0埋めが実施されます。0012312345標準123ZEROFILLを指定00123指定の仕方は、「ZEROFILL」を記述するだけです。zerofillちなみに「UNSIGNED」と「ZEROFILL」の両方を指定する場合は、下記の様に並べて指定します。zerofillただし、「ZEROFILL」を指定した場合は、マイナスの値を保持することができなくなり、自動的に「UNSIGNED」が指定したことになります。Boolean型として処理します。詳しくは下記を参照してください。DECIMAL、NUMERIC「固定小数点型」には、DECIMAL、NUMERICの型があります。DECIMALを使うことが好まれるようです。DECを使うこともできます。「DECIMAL」は、下記の様に指定します。2桁の場合は、下記の様にしていします。具体的には「-999.99~999.99」が扱える範囲になります。2桁」ではありませんので注意が必要です。)」として扱われ、小数点以下はないものとして扱われます。)」が設定されたものとして処理されます。INTと同じように、UNSIGNED、ZEROFILLを設定することができます。FLOAT、DOUBLE、REAL「浮動小数点型」には、FLOAT、DOUBLE、REALの型があります。言われる数値型で、小数点以下を必要とする場合に使用します。(「REAL」は「DOUBLE」の別名ですので、ひとまとめに解説します。)「浮動小数点型」の「FLOAT」「DOUBLE」は、下記の様に指定します。「DECIMAL」と全く同じです。そのため、注意点も同じですので割愛します。「DECIMAL」の注意点を読んでください。INTと同じように、UNSIGNED、ZEROFILLを設定することができます。unsigned「FLOAT」と「DOUBLE」との違い浮動小数点型の「FLOAT」と「DOUBLE」の違いは、使用するストレージのサイズと小数点以下の計算精度の違いです。