Estoy usando MySQL versión 5.1.49-1ubuntu8.1. Me permite definir columnas de dos tipos de datos diferentes: BOOL
y BOOLEAN
. ¿Cuáles son las diferencias entre los dos tipos?
Respuestas:
Como se estableció en otros comentarios, son sinónimos de TINYINT (1).
* Entonces, ¿por qué se molestan en diferenciar entre bool, boolean, tiny * int (1)?
Mayormente semántica.
Bool y booleano: MySQL por defecto los convierte al tipo tinyint. Según una declaración de MySQL realizada en la época de este escrito, "Tenemos la intención de implementar el manejo completo de tipos booleanos, de acuerdo con SQL estándar, en una futura versión de MySQL".
0 = FALSO 1 = VERDADERO
TINYINT: ocupa un byte; oscila entre -128 y +127; o, 0-256.
Comúnmente mencionado en esta comparación: Después de MySQL 5.0.3 - Bit: usa 8 bytes y almacena solo datos binarios.
BOOL
y BOOLEAN
?
Bit: Uses 8 bytes and stores only binary data.
información es incorrecta. Cuando agrega una columna de bits a su tabla, ocupará un byte completo en cada registro, no solo un bit. Cuando agrega una segunda columna de bits, se almacenará en el mismo byte. La columna del noveno bit requerirá un segundo byte de almacenamiento.
Una cosa que acabo de notar: con una columna definida como BOOL en MySql, Spring Roo genera correctamente código Java para deshacer el valor de un booleano, por lo que presumiblemente especificar BOOL puede agregar algún valor, incluso si es solo en la naturaleza de una pista sobre el uso previsto de la columna.
consulte la descripción general de los documentos de MySQL sobre tipos numéricos:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html