CHAR 型と VARCHAR
          型は似ていますが、格納および取り出しの方法が異なります。
        
          CHAR
          型のカラムの長さは、テーブルの作成時に宣言した長さに固定されます。この長さとして、1
          〜 255
          の任意の値を指定することができます(MySQL
          バージョン 3.23 以降では、CHAR
          型の長さとして、0 〜 255
          が可能)。CHAR
          型の値は、格納時に、指定された長さになるよう右側にスペースが埋め込まれます。CHAR
          値の取り出し時には、後続のスペースが削除されます。
        
          VARCHAR
          型のカラムの値は可変長の文字列です。VARCHAR
          カラムは、CHAR カラム同様、1 〜
          255
          の間の任意の長さとして宣言することができます。しかし、CHAR
          型の値とは異なり、VARCHAR
          型の値は、必要な文字と、長さを記録するための
          1
          バイトのみで格納されます。値に埋め込み処理が行われることはありません。値の格納時、後続のスペースは削除されます(このスペースの削除は
          SQL-99
          の仕様と異なります)。格納時や取り出し時に、ケースの変換処理は行われません。
        
          CHAR 型または
          VARCHAR
          型のカラムに、そのカラムの最大長を超える値を割り当てると、カラムのサイズに合わせて値が切り捨てられます。
        
          次の表に、さまざまな文字列値を
          CHAR(4) 型と
          VARCHAR(4)
          型のカラムを格納したときの結果に基づく、これらのカラム型の違いについて示します。
        
| 値 | CHAR(4) | 必要な記憶容量 | VARCHAR(4) | 必要な記憶容量 | 
| '' | '    ' | 4 バイト | '' | 1 バイト | 
| 'ab' | 'ab  ' | 4 バイト | 'ab' | 3 バイト | 
| 'abcd' | 'abcd' | 4 バイト | 'abcd' | 5 バイト | 
| 'abcdefgh' | 'abcd' | 4 バイト | 'abcd' | 5 バイト | 
          CHAR
          型のカラムでは、値の取り出し時に後続のスペースが削除されるため、CHAR(4)
          型と VARCHAR(4)
          型から取り出した値はそれぞれの場合で変わりません。
        
          CHAR 型と VARCHAR
          型のカラム値のソートと比較は、テーブルの作成時に
          BINARY
          属性が指定されている場合を除いて、ケース非依存方式で行われます。BINARY
          属性は、カラム値のソートと比較を、MySQL
          サーバが稼動しているマシンの ASCII
          順に従って、ケース依存方式で行うことを表します。BINARY
          属性はカラムの格納方法と取り出し方法には影響しません。
        
          バージョン 4.1.0 以降では、カラム型
          CHAR BYTE が CHAR
          BINARY
          として使用されます。これは互換性を考慮した機能です。
        
          BINARY
          属性は強固な属性です。BINARY
          として設定したカラムを式で使用すると、その式全体が
          BINARY 値として比較されます。
        
          MySQL では、CHAR 型や
          VARCHAR
          型のカラムの型が、テーブルの作成時に暗黙的に変更される場合があります。
          See 項6.5.3.1. 「カラムの暗黙的な変更」。
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

