2010-10-14 774 views
24

Parece que debería usar tinyint(); pero no sé cómo implementarlo?¿Cómo puedo agregar un campo booleano a MySQL?

La pregunta es ¿cuál es su recomendación si tengo que tener un campo booleano en la base de datos MySQL y modificar el valor Está con PHP

+0

un campo booleano también se puede interpretar como 1 y 0 por lo tener un campo tinyint dará como resultado una base de datos más rápida. Y si lo indicas aún más rápido. ¡Todas estas respuestas a continuación no son valiosas para usted! @Felix @Matthew @Haim buen trabajo –

+0

@etbal Sí, ¡todo MUY útil! – Trufa

Respuesta

43

Sí, TINYINT(1) es el camino a seguir ... también puede usar BOOL or BOOLEAN que son sinónimos (por lo que no hace una diferencia).

0 evalúa a false en PHP y 1 a true (en realidad, cualquier otro número de 0 evalúa a true, pero 1 se usa normalmente).

+1

Gracias Muy útil, ¡ya lo estoy implementando! – Trufa

+0

@Felix Kling no tiene otro número que 0 evalúa como verdadero http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html –

+0

@Viswanathan: En realidad, estaba hablando de PHP en este caso, no MySQL –

2

Usted es correcto que la solución general es tinyint(1). Puede utilizar BOOL, para abreviar:

CREATE TABLE example (
     flag BOOL 
     ); 
2

usted tiene la opción de tinyint (1) o poco

inserto 0 o 1 para este campo

ver este post de la diferencia:

Tinyint vs Bit

+0

¡Gracias por aclarar! – Trufa

4

Prefiero nada de bool, BIT, TINYINT (1). porque ninguno de ellos es realmente booleano Puede comprobar el siguiente enlace de 'por qué':

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

me gustaría utilizar mejor: ENUM ('falso', 'verdadero') no es nulo - como tipo de datos. Puede pasar 'verdadero' o 'falso' (como cadenas) desde PHP. ¡Y solo se necesitará 1 byte para almacenarlo!

+0

¿Por qué no ENUM ('0', '1') en su lugar – tormuto

+2

En realidad, la cadena ''false'' es, irónicamente, verdadera en PHP. – jonbaldie

+0

@tormuto sí, puedes. eso ayudaría a autoelegir el casting en PHP al leer. Pero con ENUM no es una práctica segura hacerlo ya que puede olvidarse de pasar cadenas de PHP. ¿Qué pasaría si alguien declara equivocadamente ENUM ('1', '0')? Vi muchos códigos como ('sí', 'no'). – Muktadir

0

Creo que ya en realidad se desea aplicar un valor lógico (0,1) restricción en un campo de tabla de MySQL, el mejor tiro se uning enumeración

CREATE TABLE table_name(
    boolean_field_name ENUM('0', '1') 
); 
Cuestiones relacionadas