昨日知った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 型カラムに変更される。

Comments


Option