場合によっては、MySQL は CREATE TABLE ステートメントで指定されたカラムの説明を暗黙的に変更します。 (これは ALTER TABLE でも可能です。) 長さが 4 未満の VARCHAR は CHAR に変更されます。テーブル内のいずれかの列が可変長の場合、結果として行全体が可変長になります。したがって、テーブルに可変長列 (VARCHAR、TEXT、または BLOB) が含まれている場合、3 文字を超えるすべての CHAR 列は VARCHAR 列に変更されます。これはカラムの使用方法にはまったく影響しません。MySQL では、VARCHAR は文字を格納するための単なる別の方法です。
MySQL は、スペースを節約し、テーブル操作を高速化するため、この変更を実装します。テーブルの種類を選択します。 TIMESTAMP の表示サイズは 2 ~ 14 の範囲の偶数である必要があります。表示サイズを 0 または 14 より大きい値に指定すると、サイズは強制的に 14 になります。 1 ~ 13 の範囲の奇数の数値サイズは、次に大きい偶数に強制的に変換されます。リテラル NULL を TIMESTAMP 列に格納することはできません。NULL に設定すると、現在の日付と時刻が設定されます。 TIMESTAMP 列はこのように動作するため、NULL 属性と NOT NULL 属性は通常の方法では使用されず、指定しても無視されます。 DESCRIBE tbl_name は常に、TIMESTAMP 列に NULL 値が割り当てられる可能性があることを報告します。 MySQL は、他の SQL データベース ベンダーが使用する特定の列タイプを MySQL タイプにマップします。 MySQL が指定したもの以外のカラム タイプを使用しているかどうかを知りたい場合は、テーブルの作成または変更後に DESCRIBE tbl_name ステートメントを発行します。 myisampack を使用してテーブルを圧縮すると、他のいくつかの列タイプが変更される可能性があります。