MySQL 文字数の制約

(MySQL 5.03以降の話)
VARCHARの場合,設定した文字数が制約.
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT はそれぞれの最大バイト数が制約.

VARCHAR
VARCHAR(X)のXは文字数.0から65,535までの値.
例)VARCHAR(4)は4文字.4バイトではない.バイト数は文字コードに依存する.
ただし,実際に適用可能な長さは,行の最大サイズ(65,535バイト)を越えない範囲である.

MySQL 5.0.3 and later is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used.

http://dev.mysql.com/doc/refman/5.0/en/char.html
TEXT
最大バイト数は次のとおり.
 TINYTEXT:255 (2^8 – 1) bytes
 TEXT:65,535 (2^16 – 1) bytes
 MEDIUMTEXT:16,777,215 (2^24 – 1) bytes
 LONGTEXT:4,294,967,295 (2^32 – 1) bytes
VARCHARのように,行の最大サイズの制約は受けない.
ただし,max_allowed_packet の制約を受ける.
その他,TEXTとVARCHARとの違いはこちらに.
http://dev.mysql.com/doc/refman/5.0/en/blob.html