昨日知ったMySQL豆知識。
- テーブルに可変長カラムが1個でもあるとCHAR型はVARCHAR型に変わる。
- 3文字以下のVARCHAR型はCHAR型に変わる。
mysql> create table address (
-> zip1 char(3),
-> zip2 char(4),
-> address text
-> );
Query OK, 0 rows affected (0.06 sec)
mysql> show create table address;
+---------+-------------------------
| Table | Create Table
+---------+-------------------------
| address | CREATE TABLE `address` (
`zip1` char(3) default NULL,
`zip2` varchar(4) default NULL,
`address` text
) TYPE=MyISAM |
+---------+-------------------------
1 row in set (0.00 sec)
知らずに泣くなよ!
MySQL リファレンスマニュアル :: 6.5.3.1 カラムの暗黙的な変更
長さが 4 文字に満たない VARCHAR 型のカラムは CHAR 型に変更される。
テーブルのいずれかのカラムが可変長である場合は、結果的にそのレコード全体が可変長になる。したがって、テーブルに可変長のカラム(VARCHAR、TEXT、BLOB)が含まれている場合、長さが 3 文字を超す CHAR 型のカラムはいずれも VARCHAR 型カラムに変更される。