MySQL WorkbenchでBoolean型が設定できない理由と対処法

こんにちは。ゆうせいです。
MySQL Workbenchを使ってテーブル設計をしていると、「Boolean型(真偽値)を設定しようとしたのに、勝手にTINYINT(1)
に変わった!」という経験、ありませんか?
この記事では、なぜMySQLでBoolean型が直接使えないのか? そして代わりにどうすればいいのか? を、図解や具体例を交えて、わかりやすく解説します。
なぜBoolean型が使えないの?
実は、MySQLには「本物のBoolean型」が存在しない
これは意外かもしれませんが、MySQLには専用のBoolean型はありません。
MySQLでは BOOLEAN
または BOOL
を指定すると、自動的に TINYINT(1)
に変換されます。
つまり、内部的には整数(0か1)として扱われるのです。
例で確認!
CREATE TABLE sample (
is_active BOOLEAN
);
このSQLを実行すると、実際には次のようなテーブルができます。
CREATE TABLE sample (
is_active TINYINT(1)
);
つまり「Booleanと書けるけど、実際には整数として保存してるよ」というのがMySQLの仕様です。
なぜこのような仕様になっているの?
他のデータベースとの互換性のため
多くのRDBMS(リレーショナル・データベース・マネジメント・システム)には、明示的なBoolean型が存在します。
例:PostgreSQLやSQL Serverなど。
MySQLはそれらとの互換性をある程度持たせるために、BOOLEAN
やBOOL
というキーワードを「別名」として受け入れています。
でも、実態は TINYINT(1)
なんですね。
Booleanの代わりにどうすればいい?
結論:TINYINT(1)
を使うのが正しい
実務でも、MySQLでは次のように定義するのが一般的です。
is_deleted TINYINT(1) DEFAULT 0
0
→ 偽(false)1
→ 真(true)
Booleanっぽく見せかけてるけど実態は数値という感じですね。
補足:ENUM型はおすすめしない理由
たまに「ENUM('true', 'false')
」のように文字列で管理するケースもありますが、以下の理由でおすすめしません。
項目 | 内容 |
---|---|
パフォーマンス | 遅くなる(比較処理が重い) |
データ整合性 | 大文字・小文字の揺れが起こりやすい |
可読性 | true/falseが「文字列」として扱われる違和感 |
MySQL WorkbenchでBooleanを設定するコツ
手順
- カラムのデータ型を「TINYINT」に手動で設定する
- 長さを「1」にしておく
- デフォルト値(0または1)を必要に応じて設定
画面上は「Boolean」が選べる?
WorkbenchのGUI上では「Boolean」という選択肢があるように見えることもありますが、それは見た目だけの便宜的な設定です。
実際のDDL(CREATE文)を見ると、やっぱり TINYINT(1)
に変換されているのが分かります。
まとめ
項目 | 内容 |
---|---|
MySQLにBoolean型はある? | ない(TINYINT(1)として扱われる) |
BOOLEANと書くとどうなる? | 自動でTINYINT(1)に変換される |
本物のBoolean型を使いたいときは? | PostgreSQLなど他のRDBMSを検討する |
対応策 | TINYINT(1)で0と1を使って管理する |
今後の学習の指針
MySQLの「表向きの型」と「内部での実装の違い」は他にもあります。次は以下のトピックも学んでみてください!
ENUM型
とVARCHAR型
の違い- NULLとNOT NULLの扱いの落とし穴
- CHECK制約がMySQLでうまく動かない理由
「どうしてこうなるの?」と疑問に思ったら、公式ドキュメントやSQLの出力結果をじっくり見てみるクセをつけると理解が深まりますよ!
質問があればいつでも聞いてくださいね。
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年5月24日問いは冒険の始まり:語源から学ぶ問いの力
山崎講師2025年5月23日JOINとサブクエリの違いを徹底解説!初心者でもわかるSQLの選び方
山崎講師2025年5月22日相関サブクエリと非相関(普通の)サブクエリの違いをわかりやすく解説!
山崎講師2025年5月22日【保存版】新人エンジニアのためのMySQL Workbench便利Tips10選!