MySQLのカラム型(有効範囲と必要記憶容量)
数値型
unknown
X=数値(1~53)
M=表示幅
D=小数点桁数
型名 | バイト | 有効範囲 (最小値~最大値) | バイト数 (必要記憶容量) |
---|---|---|---|
TINYINT | 1バイト整数 | -128~127 | 1 |
SMALLINT | 2バイト整数 | -32,768~32,767 | 2 |
MEDIUMINT | 3バイト整数 | -8,388,608~8,388,607 | 3 |
INT INTEGER | 4バイト整数 | -2,147,483,648~2,147,483,647 | 4 |
BIGINT | 8バイト整数 | -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 | 8 |
FLOAT | 浮動小数点 | -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 | 4(X<=24) 8(25>=X<=53) |
FLOAT(X) | 小さい浮動小数点 | -3.402823466E+38~-1.175494351E-38、 0、 1.175494351E-38~ 3.402823466E+38 | 4 |
DOUBLE(M,D) | 通常の浮動小数点 | -3.402823466E+38~-1.175494351E-38、 0、 1.175494351E-38~ 3.402823466E+38 | 8 |
DECIMAL(M,D) numeric(M,D) | パック無し浮動小数点 | DOUBLE型と同じ。 Dを省略した場合は10が設定。 | 1~2 M+2(D>0) M+1(D=0) D+2(M<D) |
「パック無し浮動小数点」は、各桁の数値を1文字ずつ文字列として格納します。 浮動小数点(FLOAT型・DOUBLE型)では演算に誤差が生じる場合があるため、金額など正確な演算を行うには、パック無し浮動小数点(DECIMAL型・NUMERIC型)を使用します。
日付・時刻型
unknown
型名 | 説明 | 有効範囲 (最小値~最大値) | バイト数 (必要記憶容量) |
---|---|---|---|
DATE | 日付 | '1000-01-01'~9999-12-31' | 3 '0000-00-00' |
DATETIME | 日付+時刻 | '1000-01-01 00:00:00'~ '9999-12-31 23:59:59' | 8 '0000-00-00 00:00:00' |
TIMESTAMP | タイムスタンプ | '1970-01-01 00:00:00'~ 2106年末 | 4 00000000000000 (長さは表示サイズに依存) |
TIME | 時間 | '-838:59:59'~'838:59:59' | 3 '00:00:00' |
YEAR | 年 | 2桁または4桁形式(デフォルトは4桁) ※4桁なら1901~2155、0000 ※2桁形式(70~69)なら 1970~2069 | 1 0000 |
文字列型
unknown
M=文字数
L=文字列のデータ長
型名 | 説明 | 有効範囲 (最小値~最大値) | バイト数 (必要記憶容量) |
---|---|---|---|
CHAR(M) | 固定長文字列。 テーブル作成時に定義された長さに固定され、格納時には必ず指定された長さまで右側に空白が埋められる。取り出す場合には、後方の空白スペースは削除される。 |
M=1~255 ※MySQL3.23以降、M=0~255 |
0~255 |
VARCHAR(M) | 可変長文字列(任意の長さ指定可)。 CHAR型と違い、埋め込み処理は行われない。 |
M=1~255 | 0~255 |
TINYBLOB TINYTEXT |
可変長文字列(任意の長さ指定可)。 BLOB型はデータをバイナリとして格納。TEXT型はデータを文字列として格納。VARCHAR型とほぼ同じですが、最大長の記憶容量が異なる。また、TEXT型のカラムには、主キーやインデックスを設定不可。 |
L+1(2^8) | 0~255 |
BLOB TEXT |
L+2(L<2^16) | 0~65,534 | |
MEDIUMBLOB MEDIUMTEXT |
L+3(L<2^24) | 0~16,777,215 | |
LONGBLOB LONGTEXT |
L+4(L<2^32) | 0~4,294,967,295 | |
ENUM('値1','値2',...) | テーブル作成時に列挙された格納可能な値のリストから、値が選択される文字列オブジェクト。 | 列挙数最大65535個まで | 1(列挙値255個まで) 2(列挙値65535個まで) |
SET('値1','値2',...) | ゼロ以上の値を有する文字列オブジェクト。 テーブル作成時に格納可能な値のリストを指定。複数の要素を指定する場合は、カンマ区切りで指定。そのためSET要素の値にカンマは使用不可。 |
要素数最大64個まで | セットのサイズがnの場合、(n+7)/8バイト(1,2,3,4または8バイトに切り上げ)。 |