MySQLでの整数・小数の扱いメモ

このページは、MySQLで整数・小数の扱い方(データ型)についてのメモ書きです。

もくじ

  • 整数(int)
  • 浮動小数点数(float,double)
  • 固定小数点数(decimal)

整数(int)

これはただの整数です。MySQLの場合は扱う整数の範囲(大きさ)に応じて5つのデータ型が用意されています。

  • TINYINT…1バイト(符号無しなら0~255,符号付きなら-128~127)
  • SMALLINT…2バイト(符号無しなら0~65535,符号付きなら-32768~32767)
  • MEDIUMINT…3バイト(符号無しなら0~16777215,符号付きなら-8388608~8388607)
  • INT…4バイト(符号無しなら0~4294967295,符号付きなら-2147483648~2147483647)
  • BIGINT…8バイト(符号無しなら0~18446744073709551615,符号付きなら-9223372036854775808~9223372036854775807)
格納する整数値の大きさに応じて適切なデータ型を選べば、少しはスピードアップやストレージ容量の節約効果が期待できるかもしれません。4バイト使うINT型でも最大で43億弱までの数値に対応できますが、100点満点のテストの得点をデータベースに突っ込むのであればTINYINT型(1バイト)で十分ですね。

SQLコマンドで整数型のデータを格納するテーブルを作成するときはこんな感じのコマンドを打ちます。実際には他のカラムの情報もずらずら書きますが。 [mysql] #データベース名から打ち込む場合 #データベース名 db_name #テーブル名 tbl_name #カラム名 hoge #hogeカラムのデータ型 INT(符号付き) CREATE TABLE db_name.tbl_name(hoge INT) [/mysql] [mysql] #テーブル名から打ち込む場合 #データベース名 db_name #テーブル名 tbl_name #カラム名 hoge #hogeカラムのデータ型 TINYINT(符号無し) CREATE TABLE tbl_name(hoge TINYINT UNSIGNED) [/mysql] データ型指定時に「UNSIGNED」をつけると符号無しの数になります。0と正の整数のみを扱うと確定している場合は、符号なしにして扱える数の範囲を広げておくのもいいでしょう。

浮動小数点数(float,double)

こちらは小数も扱うことが出来ます。MySQLでは2つのデータ型を用意しています。

  • FLOAT(単精度)…4バイト
  • DOUBLE(倍精度)…8バイト
当然ながら、8バイト使うDOUBLE型のほうがより大きな(小さな)数を扱うことが出来ます。但し、浮動小数点数の場合は内部処理の関係で誤差が発生するので、正確な演算が要求される場合は後述する固定小数点数か整数を使用しましょう。

SQLコマンドで浮動小数点数型のデータを格納するテーブルを作成するときはこんな感じのコマンドを打ちます。実際には他のカラムの情報もずらずら書きますが。 [mysql] #データベース名から打ち込む場合 #データベース名 db_name #テーブル名 tbl_name #カラム名 hoge #hogeカラムのデータ型 FLOAT CREATE TABLE db_name.tbl_name(hoge FLOAT) [/mysql] [mysql] #テーブル名から打ち込む場合 #データベース名 db_name #テーブル名 tbl_name #カラム名 hoge #hogeカラムのデータ型 DOUBLE CREATE TABLE tbl_name(hoge DOUBLE) [/mysql]

固定小数点数(decimal)

こちらも小数を扱うことが出来ますが、浮動小数点数で発生するような誤差はないので、正確な精度が要求される用途(金銭やポイントなどのデータ)でも使用できます。MySQLの場合は、DECIMAL型が固定小数点数です(NUMERIC型もあるようですが、本ページでは解説しません)。このデータ型を使う場合は、整数部+小数部の合計桁数及び小数部に割り当てる桁数を事前に定めることになります。

例えば合計桁数、小数部の桁数を [mysql] hoge1 DECIMAL(4,2) [/mysql] と指定した場合は、合計桁数が4,小数部の桁数が2になるので、表せる数の範囲は -99.99 から 99.99 になります。

SQLコマンドで固定小数点数型のデータを格納するテーブルを作成するときはこんな感じのコマンドを打ちます。実際には他のカラムの情報もずらずら書きますが。 [mysql] #データベース名から打ち込む場合 #データベース名 db_name #テーブル名 tbl_name #カラム名 hoge #hogeカラムのデータ型 DECIMAL #整数部+小数部の合計桁数 20 #小数部の桁数 10 CREATE TABLE db_name.tbl_name(hoge DECIMAL(20,10)) [/mysql] [mysql] #テーブル名から打ち込む場合 #データベース名 db_name #テーブル名 tbl_name #カラム名 hoge #hogeカラムのデータ型 DECIMAL #整数部+小数部の合計桁数 15 #小数部の桁数 8 CREATE TABLE tbl_name(hoge DECIMAL(15,8)) [/mysql]

参考リンク

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: