0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【絶対に覚えておきたい】MySQLの基本データ型

Posted at

数値型

整数型

整数値を格納するデータ型

ストレージサイズ 符号付き 符号なし
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値を持つことができるため、未選択の状態を表現できる

ユーザーの権限や設定などの、複数の値の組み合わせのデータを扱う場合に適している。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?