MySQLのSET型とENUM型の違い

MySQLの列挙できるデータ型としてSET型とENUM型があります。
ま、入るデータを限定できるという利点はあるんですけど、
この使い道の違いがなんなのかちょっと謎。


で、調べてみると

ENUM型 … リストの中から一つ選ぶ … ラジオボタン
SET型 … リストの中から選ぶ … チェックボックス

という感じです。
実際、ENUMはChar型でデータを保存して、SET型はビット列で
保存するみたいです。ビットが立ってるやつが選択されてる、
といった具合ですね。


フォームの値をそのまま格納できるらしいので、便利ですよね。
もっと早く知っていればよかった…。


MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.4.4 ENUM タイプ
http://dev.mysql.com/doc/refman/5.1/ja/enum.html


エンタープライズMySQL独自のENUM・SET型を使ってみよう
http://www.itmedia.co.jp/enterprise/0308/24/epn01.html


データ型の概要 [SQL講座 -Smart]
http://www.rfs.jp/sb/sql/02/03.html


追記(2009/07/13)
追加の方法。

INSERT INTO sample(way) VALUES('自転車');
INSERT INTO sample(food) VALUES('イカ焼き,たこ焼き');

こんな風に2進値でもなんでもなく、定義されている文字列を
投げる。SET型は、カンマで区切って投げる。