How can I add a Boolean field to MySQL?

55,956

Solution 1

Yep, TINYINT(1) is the way to go... you can also use BOOL or BOOLEAN which are synonyms (so it does not make a difference).

0 evaluates to false in PHP and 1 to true (actually, any other number than 0 evaluates to true, but 1 is normally used).

Solution 2

I prefer none of bool, BIT, TINYINT(1). because none of them are actually boolean. You can check the following link for 'why':

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

I would better use : ENUM ('false', 'true') not null - as datatype. You can pass 'true' or 'false' (as strings) from PHP. And it will take only 1 byte to store it!

Solution 3

You're correct that the general solution is tinyint(1). You can use BOOL for short:

CREATE TABLE example (
         flag BOOL
       );

Solution 4

you have option of tinyint(1) or bit

insert 0 or 1 to this field

see this post of the difference :

Tinyint vs Bit

Share:
55,956

Related videos on Youtube

Trufa
Author by

Trufa

Existing code exerts a powerful influence. Its very presence argues that it is both correct and necessary.

Updated on July 09, 2022

Comments

  • Trufa
    Trufa almost 2 years

    It seems I should use tinyint(); but I don't know how to implement it?

    The question is what is your recommendation if I need to have a boolean field in MySQL DB and modify it´s value with PHP

    • Etienne Marais
      Etienne Marais over 13 years
      A boolean field can also be interpreted as 1's and 0's so having a tinyint field will result in a faster database. And if you index it even faster. All of these answers below are off value to you! @Felix @Matthew @Haim good job
    • Trufa
      Trufa over 13 years
      @etbal Yes indeed, all VERY helpful!
  • Vishwanath Dalvi
    Vishwanath Dalvi almost 13 years
    @Felix Kling not any other number than 0 evaluates to true dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
  • Felix Kling
    Felix Kling almost 13 years
    @Viswanathan: Actually I was talking about PHP in this case, not MySQL.
  • tormuto
    tormuto almost 9 years
    Why not ENUM ('0', '1') instead
  • jonbaldie
    jonbaldie over 8 years
    Actually the string 'false' is, ironically, truey in PHP.
  • Muktadir
    Muktadir over 8 years
    @tormuto yes, you can. that would help auto-type casting in PHP when reading. But with ENUM it's not a safe practice to do it as you may forget to pass strings from PHP. What would happen if someone mistakenly declares ENUM('1', '0')? I saw many codes like ('yes', 'no').