編集済み、以前の回答で間違った仮定をしていました。http://dev.mysql.com/doc/refman/5.0/en/char.htmlからの抜粋を貼り付けます(強調を追加)
CHAR 型と VARCHAR 型は似ていますが、保存方法と取得方法が異なります。MySQL 5.0.3 の時点では、最大長と末尾のスペースが保持されるかどうかも異なります。
CHAR および VARCHAR 型は、格納する最大文字数を示す長さで宣言されます。たとえば、CHAR(30) は 30 文字まで保持できます。
CHAR 列の長さは、テーブルの作成時に宣言した長さに固定されます。長さは 0 から 255 までの任意の値です。CHAR 値が格納されると、指定された長さになるまで右側にスペースが埋め込まれます。CHAR 値が取得されると、末尾のスペースが削除されます。
VARCHAR 列の値は可変長文字列です。長さは、MySQL 5.0.3 より前では 0 から 255、5.0.3 以降では 0 から 65,535 の値として指定できます。MySQL 5.0.3 以降での VARCHAR の有効な最大長は、最大行サイズ (すべての列で共有される 65,535 バイト) と使用される文字セットの影響を受けます。
CHAR とは対照的に、VARCHAR 値は、1 バイトまたは 2 バイトの長さのプレフィックスとデータとして格納されます。長さのプレフィックスは、値のバイト数を示します。列は、値が 255 バイト以下しか必要としない場合は長さ 1 バイトを使用し、値が 255 バイトを超える可能性がある場合は長さ 2 バイトを使用します。