数値型
整数型
整数値を格納するデータ型
型 | ストレージサイズ | 符号付き | 符号なし |
---|---|---|---|
TINYINT | 1バイト | -128 ~ 127 | 0~255 |
SMALLINT | 2バイト | -32768 ~ 32767 | 0~65535 |
MEDIUMINT | 3バイト | -8388608 ~ 8388607 | 0~16777215 |
INT | 4バイト | -2147483648 ~ 2147483647 | 0~4294967295 |
BIGINT | 8バイト | -2の63乗 ~ 2の63乗-1 | 0~2の64乗-1 |
符号付き(signed
)→ 正の整数と負の整数の両方を扱う。整数型のデフォルト設定。
符号なし(unsigned
)→ 正の整数のみを扱う。整数型のオプション設定。
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:0
- ストレージサイズはメモリやディスクの使用量とパフォーマンスに関わる
- データの範囲に応じて適切な型を選択する必要がある
- MySQL 8.0.17以降、表示幅属性とZEROFILL属性は非推奨
固定小数点型(DECIMAL型 / NUMERIC型)
小数部の桁数を固定した数値を格納する真数値データ型
(DECIMAL型とNUMERIC型はどちらも実質的な違いはなく動作も同じ)
- 定義の形式:
DECIMAL(M, D)
(M
は全体の桁数、D
は小数部の桁数) - 例:
DECIMAL(5, 2)
→ -999.99 〜999.99を格納可能 - ストレージサイズ:数値の桁数に基づく
- 最大桁数:65
- 小数部の桁数のデフォルト値:0
- 格納される値が指定された精度や桁数に収まらない場合、自動的に丸められる
金融計算や組み込みシステムなど、精度が重要で範囲が限定されている数値を扱う場合に適している。
浮動小数点型
小数部の桁数が可変長の実数を格納する概数値データ型
型 | ストレージサイズ | 精度 | 許容値 |
---|---|---|---|
FLOAT | 4バイト | 約7桁の10進数 | -3.402823466E+38 〜 -1.175494351E-38、0、1.175494351E-38 〜 3.402823466E+38 |
DOUBLE | 8バイト | 約15桁の10進数 | -1.7976931348623157E+308 〜 -2.2250738585072014E-308、0、2.2250738585072014E-308 〜 1.7976931348623157E+308 |
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:0
- 格納される値が指定された精度や桁数に収まらない場合、自動的に丸められる
- 概数値である特性上、精度の損失が発生する場合があるため、高精度が求められる用途には固定小数点型の仕様が推奨される
MySQL 8.0.17以降、FLOAT(M, D)
およびDOUBLE(M, D)
構文は非推奨
科学技術計算やグラフィックス処理など、広範囲の数値を扱う場合に適している。
ビット値型(BIT型)
ビット値を格納するデータ型
- 定義の形式:
BIT(M)
(M
は1〜64のビット数) - ストレージサイズ:指定したビット数に基づく
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:0
- ビット値の指定形式:
b'value'
(value
は0と1で表すバイナリ値) - カラムに格納されたバイナリデータは、使用するツールやクライアントによって表示形式が異なる(以下、例)
- バイナリ形式:整数値1は0001、整数値10は1010のように表す(4ビットの場合)
- 16進数形式:整数値1は0x01、整数値10は0x0Aのように表す
フラグやバイナリ情報など、ビットデータを扱う場合に適している。
日時型
DATE型
日付情報を格納するデータ型
- 値の形式:
YYYY-MM-DD
- 値の範囲:'1000-01-01' 〜 '9999-12-31'
- ストレージサイズ:3バイト
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:'0000-00-00'
- '0000-00-00'は値の範囲外であるため、途中でNOT NULL制約をつける際は範囲内のDEFAULT値の設定も必要
DATETIME型
日時情報を格納するデータ型
- 値の形式:
YYYY-MM-DD hh:mm:ss
- 値の範囲:'1000-01-01 00:00:00' 〜 '9999-12-31 23:59:59'
- ストレージサイズ:8バイト
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:'0000-00-00 00:00:00'
- '0000-00-00 00:00:00'は値の範囲外であるため、途中でNOT NULL制約をつける際は範囲内のDEFAULT値の設定も必要
TIMESTAMP型
タイムゾーンを考慮した日時情報を格納するデータ型
- 値の形式:
YYYY-MM-DD hh:mm:ss
- 値の範囲:'1970-01-01 00:00:01' UTC 〜 '2038-01-19 03:14:07' UTC
- ストレージサイズ:4バイト
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:'0000-00-00 00:00:00'
TIME型
時間を表現するためのデータ型
- 値の形式:
hh:mm:ss
- 値の範囲:'-838:59:59' 〜 '838:59:59'
- ストレージサイズ:3バイト
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:'00:00:00'
- カラムに省略された値(コロン付き)を割り当てると、'11:22'は'11:22:00'に変換される
- カラムに省略された値(コロンなし)を割り当てると、1122および'1122'は'00:11:22'となる
YEAR型
年を表現するためのデータ型
- 値の形式:
YYYY
- 範囲:1901〜2155、および0000
- ストレージサイズ:1バイト
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:0000
- カラムに省略された文字列を割り当てると、'0'〜'69'は2000〜2069、'70'〜'99'は1970〜1999のYEAR値に変換される
- カラムに省略された数値を割り当てると、1〜69は2001〜2069、70〜99は1970〜1999、0および00は0000のYEAR値に変換される
文字列型
CHAR型
固定長の文字列を格納するデータ型
- 定義の形式:
CHAR(M)
- ストレージサイズ:最大255バイト(指定した長さに依存)
- 最大値:255
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:空文字
- 定義した長さに満たない場合、空白でパディングされる
国コード(例:US、JP)などのように、常に同じ長さのデータを扱う場合に適している。
VARCHAR型
可変長の文字列を格納するデータ型
- 定義の形式:
VARCHAR(M)
- ストレージサイズ:最大65,535バイト(その他のカラムとの組み合わせによって変わる)
- 最大値:65,535
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:空文字
名前、住所、説明など、長さが変動するデータを扱う場合に適している。
BINARY型
固定長のバイナリデータを格納するデータ型
- 定義の形式:
BINARY(M)
- ストレージサイズ:最大255バイト(指定した長さに依存)
- 最大値:255
- 定義した長さに満たない場合、パッド値(0x00)でパディングされる
ハッシュ値や固定長の識別子といった固定サイズのバイナリデータを扱う場合に適している。
VARBINARY型
可変長のバイナリデータを格納するデータ型
- 定義の形式:
VARBINARY(M)
- ストレージサイズ:最大65,535バイト(その他のカラムとの組み合わせによって変わる)
- 最大値:65,535
画像データやファイルのバイナリ内容といった可変サイズのバイナリデータを扱う場合に適している。
TEXT型
サイズの大きい可変長の文字列を格納するデータ型
- ストレージサイズ:最大65,535バイト(64KB)
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:空文字
- DEFAULT値の設定はできない
- 他にもサイズが異なる
TINYTEXT型
、MEDIUMTEXT型
、LONGTEXT型
がある
長文の説明、コメント、記事などのサイズの大きい文字列データを扱う場合に適している。
BLOB型
サイズの大きい可変長のバイナリデータを格納するデータ型
- ストレージサイズ:最大65,535バイト(64KB)
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:空文字
- DEFAULT値の設定はできない
- 他にもサイズが異なる
TINYBLOB型
、MEDIUMBLOB型
、LONGBLOB型
がある
音声ファイル、動画、ドキュメントなどのサイズの大きいバイナリデータを扱う場合に適している。
ENUM型
定義された選択肢の中から1つの値のみを格納するデータ型
- 定義:
ENUM('a', 'b', 'c'...)
- 要素の最大数:65,535
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:定義した選択肢の最初の値
- NULL値を持つことができるため、未選択の状態を表現できる
性別やステータスなどの選択肢が限られるデータを扱う場合に適している。
SET型
定義された選択肢の中から複数の値を格納するデータ型
- 定義:
SET('a', 'b', 'c'...)
- 要素の最大数:64
- NOT NULL制約を付けた場合に既存レコードに割り当てられる値:空文字
- NULL値を持つことができるため、未選択の状態を表現できる
ユーザーの権限や設定などの、複数の値の組み合わせのデータを扱う場合に適している。