When considering only two possible values, 0 & 1 or True & False, it is quite obvious that BIT(1) does a better job:
- BIT(1) forces only 2 possible values : 0 and 1, while TINYINT(1) can accept any integer values less than 10 (0,1,2,3,4,5….) which can be ambiguous.
- Multiple BIT(1) columns can be combined into bytes so they require less space than multiple TINYINT(1) columns do.
So why MySQL interprets Boolean as TINYINT(1), but not BIT(1)? Is there any advantage of using TINYINT(1) over BIT(1) in handling boolean values?
It depends on version and database engine and driver
But BIT is preferable to TINYINT of course.
It’s just legacy and inertia that keeps TINYINT…