MySQL :: カラム型のメモ

数値型
タイプ バイト 最小値 最大値
(Signed/Unsigned)(Signed/Unsigned)
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 -9223372036854775808 9223372036854775807
0 18446744073709551615

Signed: 負の値を許可する(デフォルト)
Unsigned: 負の値を許可しない




文字列型
フィールド型 指定範囲最大記憶領域
CHAR固定長文字列CHAR(1) - CHAR(255) 256 bytes
VARCHAR可変長文字列VARCHAR(1) - VARCHAR(255) 256 bytes
フィールド型 指定範囲最大記憶領域
CHAR固定長文字列CHAR(1) - CHAR(255) 256 文字
VARCHAR可変長文字列VARCHAR(1) - VARCHAR(65535) 65535 bytes

※ 5.x から CHAR 型の単位が `文字' になったことに注目。
  VARCHAR 型の文字数は利用する文字エンコーディングによって異なる。

フィールド型 最大
TEXTラージ文字列 65535 bytes
MEDIUMTEXTラージ文字列 1677215 bytes
LARGETEXTラージ文字列 4294967295 bytes
BLOBラージバイナリ 65535 bytes
MEDIUMBLOBラージバイナリ 1677215 bytes
LARGEBLOBラージバイナリ 4294967295 bytes

BLOB 型と TEXT 型のカラムには、DEFAULT 値は設定できない。




日付型
フィールド型表示フォーマット
DATETIMEYYYY-MM-DD HH:MM:SS
DATEYYYY-MM-DD
TIMEHH:MM:SS
YEARYYYY
TIMESTAMP(14)YYYYMMDDHHMMSS
TIMESTAMP(12)YYMMDDHHMMSS
TIMESTAMP(10)YYMMDDHHMM
TIMESTAMP(8)YYYYMMDD
TIMESTAMP(6)YYMMDD
TIMESTAMP(4)YYMM
TIMESTAMP(2)YY

TIMESTAMP 型は、INSERT または UPDATE 操作に対して現在の日付と時刻が自動的に適用される。
ただし、TIMESTAMP 型が複数ある場合は、最初のカラムのみ適用されるということに注意しなければならない。

レプリケーション等のクラスタ化を考慮するのであれば、TIMESTAMP 型の利用は避けるべき。
日付はアプリケーション側で挿入、更新させる仕様の方がよい。
※もちろん、MySQLの now() 関数も使用禁止。