• ベストアンサー

TRUE/FALSEのデータ型

TRUE or FALSE のデータの場合(例えばフラグ類)、皆さんどのようなデータ型にしていますか? ENUM型とBOOLEAN型(TINYINT(1))の違いはどのような所で出るのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>どのデータ型が一般的なのかな 数値のデータ型を使用し、0と1を格納しているケースもあれば、文字型で'Y'や'N'を格納しているケースもあります。また、bool型を使用し、trueとfalseで区別しているケースもあります。 どれが「一般的か?」と言われれば、ケース・バイ・ケースであったりするので、答えがないように思います。 MySQLに関しては、#1で回答したようにboolは不完全な状態での実装です。必ず1バイト確保されるので、データベース容量の削減というメリットはありません。 MySQLのシステムの表の定義を見てみると、tinyint(1)やboolでなく、enumを多用していることが分かります。 <表定義を知る例> show create table mysql.user; これを見ると、「MySQLに限っては、enumかな?」と感じます。

NORI-AYU
質問者

お礼

ありがとうございます。 すっきりいたしました。 とりあえず、true、falseはENUM型を使ってみたいと思います。

その他の回答 (1)

回答No.1

マニュアルを読みましたか? MySQLのBOOLEANは、完全な形では実装されていません。 >TRUE or FALSE のデータの場合(例えばフラグ類)、皆さんどのようなデータ型にしていますか? こういう書込みは、「質問でない」として扱われ、規約違反になる可能性があります。 ENUMは、定義時に指定した値だけしか格納できません。 BOOLEAN(TINYINT(1))は、0と1だけでなく、127などTINYINTで格納可能な数値も実際に格納できてしまいます。trueとfalseを使えば、そういった間違いは防止できますけどね。

NORI-AYU
質問者

お礼

>こういう書込みは、「質問でない」として扱われ、規約違反になる可能性があります。 失礼いたしました。今後気をつけます。 知りたかったのは、TRUE or FALSE の時、どのデータ型が一般的なのかなと思ったのです。

関連するQ&A