場合によっては、CREATE TABLE
ステートメントで指定されているカラムの型、属性が、MySQL
によって暗黙的に変更されることがあります(このような変更は
ALTER TABLE
でも発生する場合があります)。
長さが 4 文字に満たない
VARCHAR
型のカラムは
CHAR
型に変更される。
テーブルのいずれかのカラムが可変長である場合は、結果的にそのレコード全体が可変長になる。したがって、テーブルに可変長のカラム(VARCHAR
、TEXT
、BLOB
)が含まれている場合、長さが
3 文字を超す CHAR
型のカラムはいずれも VARCHAR
型カラムに変更される。これはカラムの使用方法には影響しない。MySQL
では、VARCHAR
型は単に文字を格納するもう 1
つの手段として使用されている。MySQL
でこの変換が実行される理由は、スペースを節約し、テーブル処理を迅速化するためである。
See 章 7. MySQL のテーブル型。
バージョン 4.1.0 以降では、255
文字を超える長さを持つ CHAR
型または VARCHAR
型のフィールドはいずれも
TEXT
型に変換される。
これは互換性を考慮した機能。
TIMESTAMP
型の表示サイズは 2
〜 14 の範囲の偶数でなければならない。
表示サイズとして14 を超す数値や 0
を指定すると、サイズは強制的に 14
に設定される。1 〜 13
の範囲の奇数値を指定すると、サイズは強制的に
1 つ上の偶数に設定される。
TIMESTAMP
型のカラムにはリテラルの
NULL
は格納できない。このカラムに
NULL
を挿入すると、値として現在の日時が設定される。TIMESTAMP
型のカラムはこのように動作するため、NULL
属性と NOT NULL
属性は通常どおりには適用されず、それらを指定しても無視される。DESCRIBE
tbl_name
では、TIMESTAMP
型のカラムは常に NULL
値の割り当てが可能と報告される。
MySQL では、他の SQL データベースベンダが使用している一部のカラム型が MySQL のカラム型にマップされる。 See 項6.2.5. 「他のデータベースエンジンのカラム型の使用」。
指定した以外のカラム型が MySQL
によって使用されたかどうか確認するには、テーブルの作成または変更後に、DESCRIBE
tbl_name
ステートメントを発行します。
myisampack
を使用してテーブルを圧縮すると、特定の他のカラム型の変更が発生する場合があります。
See 項7.1.2.3. 「圧縮テーブルの特性」。
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.