スポンサーリンク

3-4.MySQLのテーブルで使用できる列の型

2021年1月17日

スポンサーリンク

MySQLのようなリレーショナルデータベースでテーブルを定義する場合、格納するデータの各項目の特徴を理解て適切な型を割り当てる必要があります。
型には数値や文字列、日付などを格納するものがあります。
データの内容に合わせた型を正しく設定する必要があります。
やみくもに大きな値が格納できる型を設定するとストレージを無駄に消費するうえに処理の負担も増大しコストがかかることになります。。

この記事ではMySQLに格納されるテーブルの項目にはどのようなものがあるか解説していきますのでテーブルの設計に役立てて下さい。

スポンサーリンク

1.数値型

列項目の属性で文字や数値といった種類をデータ型といいます。
データ型には「数値型」「文字列型」「日付・時刻型」などがあります。

1)整数型

数値型はその名の通り数値を格納するための型です。
扱う数値の精度によりいくつかの数値型があります。

型の定義
※[]内の記述は省略可能
UNSIGNEDを省略した場合に格納できる範囲 UNSIGNEDを指定した場合に格納できる範囲 必要サイズ
(バイト)
TINYINT [(length)] [UNSIGNED] [ZEROFILL] -128 〜 127 0 〜 255 1
SMALLINT [(length)] [UNSIGNED] [ZEROFILL] -32768 〜 32767 0 〜 65535 2
MEDIUMINT [(length)] [UNSIGNED] [ZEROFILL] -8388608 〜 8388607 0 〜 16777215 3
INT [(length)] [UNSIGNED] [ZEROFILL] -2147483648 〜 2147483647 0 〜 4294967295 4
BIGINT [(length)] [UNSIGNED] [ZEROFILL] -9223372036854775808 〜 9223372036854775807 0 〜 18446744073709551615 8

 

2)固定小数点型

固定小数点型は以下の2つがあります。

型の定義
※[]内の記述は省略可能
指定方法 必要サイズ
(バイト)
DECIMAL [(length[,decimals])] [UNSIGNED] [ZEROFILL]  

lemgth:整数部と小数部を合わせた桁(最小1,最大65,省略時10)
decimals:小数部の桁(最小0,最大値30,省略時0)

整数部、小数部共に桁が9桁毎に4バイトが必要。

 

以下はDECIMALのシノニムである。
NUMERIC
[(length[,decimals])] [UNSIGNED] [ZEROFILL] DEC [(length[,decimals])] [UNSIGNED] [ZEROFILL] FIXED [(length[,decimals])] [UNSIGNED] [ZEROFILL]

DECIMALでデータ格納に必要なバイト数

整数部と小数部それぞれサイズを計算します。
桁数を9で区切った余りで以下のとおりです。

桁を9で割った余り 必要バイト数
0 0
1,2 1
3,4 2
5,6 3
7,8,9 4

格納に必要なバイト数を求めてみる

例えば「DECIMAL (18,5)」だった場合は
整数部は13桁です。なので9桁の4バイトと余り4桁の2バイトとなり、整数部は6バイトが必要です。
小数部は5桁なので必要バイト数は3バイトです。
合計して9バイトが必要バイト数となります。

 

3)浮動小数点型

浮動小数点型は以下の2つがあります。

FLOATは単精度浮動小数点型でDOUBLEは倍精度浮動小数点型です。
小数点以下で正確に扱える桁数はFLOATが7桁でDOUBLEで15桁です。
通常はDOUBLEを使う事が推奨されます。(MySQLの内部ではDOUBLEで処理されるため)

型の定義
※[]内の記述は省略可能
UNSIGNEDを省略した場合に格納できる範囲 UNSIGNEDを指定した場合に格納できる範囲 必要サイズ
(バイト)
FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] -3.402823466E+38 ~ -1.175494351E-38、
0、
1.175494351E-38 ~ 3.402823466E+38
0、
1.175494351E-38 ~ 3.402823466E+38
4
DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] -1.7976931348623157E+308 ~ -2.2250738585072014E-308、0、
2.2250738585072014E-308 ~ 1.7976931348623157E+308
0、
2.2250738585072014E-308 ~ 1.7976931348623157E+308
8

スポンサードサーチ

2.文字列型

文字を扱うための型です。
主に使用される型のみ抜粋しています。以下の種類があります。
他の形式がいくつかありますがあまり使用しません。必要に応じて公式HP「文字列型の概要」を参照ください。

型の定義 説明 最大長
CHAR(length) 固定長の文字列を格納するための型です。
lengthは桁を文字数で表し、格納する文字列が定義した桁に満たない場合は空白が埋められます。
255
VARCHAR(length) 可変長の文字列を格納するための型です。
lengthは最大長を文字数で表します。lengthの最大値は65,535です。
65535
TEXT 長い文字列を格納するのに使用されます。 65535

スポンサードサーチ

3.日付と時間型

日付や時刻を格納するための型です。

型の定義 説明
DATE 日付を格納する型です。 ‘2021-01-01’
DATETIME 日付と時刻を格納する型です。 ‘2021-01-01 12:34:56’
TIMESTAMP タイムスタンプ値を格納します。
更新時に値が指定されない場合タイムスタンプが設定されます。
‘2021-01-01 12:34:56’
TIME 時刻を格納する型です。 ’12:34:56′
YEAR 年を格納する型です。 ‘2021’

4.論理値型

・BOOL、BOOLEAN 論理値を表します。0はfalse、0以外はtrueが実際はtrueとfalseはそれぞれ、1と0のエイリアスです。
※他のデータベースでのboolean(論理型)はMySQLにおいては数値型としています。