

**最終的にやりたいこと**  
・MySQL5.7に真偽値を格納したい

**知りたいこと**  
・boolean型、bit(1)型、tinyint(1)型の何れが良い？

* * *

**Q1.boolean リテラルについて**  
・[TRUE および FALSE 定数はそれぞれ 1 と 0
として評価される](https://dev.mysql.com/doc/refman/5.6/ja/boolean-
literals.html)、と書かれていますが、これはどのようなデータ型に対しても当てはまるのでしょうか？  
・例えば、tinyint(1)型に格納された1だけではなく、bit(1)型に格納された1に対しても、SELECTする際「where フィールド名 =
true」は成立する？

* * *

**Q2.boolean型は、tinyint(1)型と完全に同一？**  
・boolean型でフィールド作成するとtinyint(1)型で作成されるのですが、これは、最初からtinyint(1)型を指定して作成したフィールト内容と全く同じということを意味するのでしょうか？

* * *

**Q3.boolean型は、どうしてbit(1)型ではない？**  
・tinyint(1)型だと01以外も格納されることが有り得るので、0と1しか格納できないbit(1)型の方が、より適切と思うのですが…  
・boolean型を、tinyint(1)型として処理するような仕様になっているのは、何か理由があるのでしょうか？


CC BY-SA 3.0
2017-10-10T14:50:45.417
38570
2018-01-24T12:33:12.003
7886
question
mysql
MySQLで真偽値を格納する場合、bit(1)型のフィールドよりtinyint(1)型の方が良い？


  1. MySQL ではリテラルとしての TRUE, FALSE は構文解析時に 1, 0 として扱われます。そのため 1, 0 と指定するのとまったく同じです。

  2. 型としての BOOLEAN も同様に構文解析時に TINYINT(1) として扱われます。BOOLEAN と TINYINT(1) はまったく同じです。

  3. これについてはわかりません。


CC BY-SA 3.0
2017-10-11T03:44:47.047
38584
2017-10-11T03:44:47.047
3249
38570
answer